分享JS表单验证源码(带错误提示及密码等级)

分享JS表单验证源码是一项非常实用的技能,让我们一步步来学习如何完成它。

  1. 首先我们需要准备一个HTML表单。代码如下:
<form action="#" method="POST">
  <label>用户名:</label>
  <input type="text" name="username">
  <br><br>
  <label>密码:</label>
  <input type="password" name="password">
  <br><br>
  <label>确认密码:</label>
  <input type="password" name="repassword">
  <br><br>
  <button type="submit">提交</button>
</form>
  1. 接下来我们需要编写JS代码来验证表单数据。代码如下:
// 获取表单元素
var form = document.querySelector('form');
var username = document.querySelector('input[name="username"]');
var password = document.querySelector('input[name="password"]');
var repassword = document.querySelector('input[name="repassword"]');

// 绑定表单提交事件
form.addEventListener('submit', function(e) {
  e.preventDefault();

  // 验证用户名
  if (username.value.trim() === '') {
    alert('用户名不能为空');
    username.focus();
    return false;
  }

  // 验证密码
  if (password.value.trim() === '') {
    alert('密码不能为空');
    password.focus();
    return false;
  }
  if (password.value !== repassword.value) {
    alert('密码不一致');
    repassword.focus();
    return false;
  }

  // 验证密码强度
  var level = getPassLevel(password.value);
  if (level < 2) {
    alert('密码强度太弱');
    password.focus();
    return false;
  }

  // 验证成功
  alert('提交成功');
});

// 获取密码强度等级
function getPassLevel(password) {
  var level = 0;
  if (/[a-zA-Z]+/.test(password)) {
    level++;
  }
  if (/[0-9]+/.test(password)) {
    level++;
  }
  if (/[^0-9a-zA-Z]+/.test(password)) {
    level++;
  }
  return level;
}

以上代码实现了以下验证功能:

  • 验证用户名不能为空
  • 验证密码不能为空
  • 验证两次输入的密码是否一致
  • 验证密码强度是否达到两级及以上

  • 如果你希望在用户输入时,即时提示错误信息,可以使用以下代码:

username.addEventListener('input', function() {
  if (username.value.trim() === '') {
    showError(username, '用户名不能为空');
  } else {
    hideError(username);
  }
});

password.addEventListener('input', function() {
  if (password.value.trim() === '') {
    showError(password, '密码不能为空');
  } else if (password.value !== repassword.value) {
    showError(repassword, '密码不一致');
  } else {
    hideError(password);
    hideError(repassword);
  }

  var level = getPassLevel(password.value);
  if (level < 2) {
    showError(password, '密码强度太弱');
  } else {
    hideError(password);
  }
});

repassword.addEventListener('input', function() {
  if (password.value !== repassword.value) {
    showError(repassword, '密码不一致');
  } else {
    hideError(repassword);
  }
});

// 显示错误信息
function showError(element, message) {
  var parent = element.parentNode;
  var errorElement = parent.querySelector('.error-message');
  if (!errorElement) {
    var errorElement = document.createElement('span');
    errorElement.className = 'error-message';
    parent.appendChild(errorElement);
  }
  errorElement.innerText = message;
  parent.classList.add('has-error');
}

// 隐藏错误信息
function hideError(element) {
  var parent = element.parentNode;
  var errorElement = parent.querySelector('.error-message');
  if (errorElement) {
    errorElement.innerText = '';
    parent.classList.remove('has-error');
  }
}

以上代码实现了以下功能:

  • 在用户输入用户名时,即时提示用户名不能为空
  • 在用户输入密码和确认密码时,即时提示密码不一致
  • 在用户输入密码时,即时提示密码的强度是否达标

示例1:当输入密码为 "12345" 时,即时提示密码强度太弱

示例2:当输入的用户名为空时,即时提示用户名不能为空

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:分享JS表单验证源码(带错误提示及密码等级) - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 性能优化篇之Webpack构建代码质量压缩的建议

    “性能优化篇之Webpack构建代码质量压缩的建议”是对于Webpack构建打包JS的一个性能优化方案。本文将详细讲解如何进行Webpack构建代码质量压缩的过程。 1. 使用Webpack UglifyJsPlugin插件实现代码压缩 在Webpack打包JS之前,参考文档Webpack UglifyJS Plugin,我们可以安装并使用Webpack U…

    JavaScript 2023年5月28日
    00
  • 老生常谈JavaScript数组的用法

    老生常谈JavaScript数组的用法 什么是JavaScript数组 JavaScript中的数组是一种数据结构,用来存储一组数据。数组中的每个数据项都有一个索引值,从0开始计数,可以通过索引值来访问数组中的元素。 声明和初始化一个数组 声明一个数组需要使用[]符号,数组的元素之间使用,进行分隔,可以同时存储任何类型的数据。 示例代码: const arr…

    JavaScript 2023年5月18日
    00
  • js时间戳与日期格式之间转换详解

    关于“js时间戳与日期格式之间转换详解”这一话题,我将从以下几个方面进行详细讲解: 时间戳(Timestamp)的定义 JavaScript中的时间戳 JavaScript中的日期格式 时间戳与日期格式之间的相互转换 时间戳(Timestamp)的定义 在计算机的领域中,时间戳(Timestamp)是指某个被定义为某个特定事件发生的精确时间点所对应的数字或字…

    JavaScript 2023年5月27日
    00
  • Chrome扩展页面动态绑定JS事件提示错误

    Chrome扩展开发中,我们经常需要在选项页面或者弹窗页面中动态绑定JS事件。但是在实际开发的过程中,发现有时候动态绑定事件会出现错误,需要我们进行排查。下面是一个完整攻略,帮助开发人员解决这个问题。 1. 确认目标事件是否正确绑定 在进行动态绑定事件时,我们需要确认目标事件是否正确绑定。例如,我们在页面中找到一个按钮,需要在按钮上动态绑定click事件,如…

    JavaScript 2023年6月10日
    00
  • 利用Math.js解决JS计算小数精度丢失问题

    利用Math.js解决JS计算小数精度丢失问题的完整攻略 问题描述 在JavaScript中进行小数运算时,会容易出现精度丢失的问题,例如在进行两个小数相加时,结果并不是预期的精确值,而是一个近似值。 例如: console.log(0.1 + 0.2); // 0.30000000000000004 解决方案 解决小数精度丢失问题的最简单方法是使用第三方库…

    JavaScript 2023年5月28日
    00
  • JavaScript 正则表达式中global模式的特性

    JavaScript 正则表达式中global模式是一种用于匹配字符串的特殊模式,具有以下特性: 全文搜索匹配:global模式可以在整个字符串中搜索,而不仅仅是搜索第一个匹配的位置。当在正则表达式中使用全局标志g时,可以进行全文搜索匹配。 下面是一个示例:假设我们有以下HTML代码: <div class="item">It…

    JavaScript 2023年6月10日
    00
  • 15个非常实用的JavaScript代码片段

    当涉及到在网站上添加或改善交互时,JavaScript 是一个非常有价值的语言。但是,编写大量代码段时,有时候容易感到身体力行的疲惫。 在这里我分享了 15 个实用的 JavaScript 代码段,这些代码段可以帮助你加快开发速度,并优化你的代码。下面我将逐一讲解这些片段的攻略。 1. 将数字转换成货币格式 在金融领域的网站中,通常需要将某个数字转换成货币格…

    JavaScript 2023年5月28日
    00
  • JS加密插件CryptoJS实现的Base64加密示例

    下面是“JS加密插件CryptoJS实现的Base64加密示例”的完整攻略,包含两个示例: 1. 什么是CryptoJS? CryptoJS是一个纯JavaScript实现的加密库,提供了很多常见的加密算法和加密模式,例如AES、DES、TripleDES、MD5、SHA-1、SHA-256等。它支持的加密方式很全面,使用简便,而且在前端中使用也非常方便。 …

    JavaScript 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部