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

yizhihongxing

分享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日

相关文章

  • Java matches类,Pattern类及matcher类用法示例

    Java中的matches、Pattern和Matcher类一起可以实现Java中正则表达式的匹配操作。 matches类是String类的一种方法,在Java中用于测试字符串是否与指定的正则表达式匹配。如果匹配则返回true,否则返回false。 Pattern类是Java中正则表达式的编译表示。可以把一个正则表达式编译成Pattern对象,然后可以使用P…

    JavaScript 2023年6月10日
    00
  • JavaScript使用function定义对象并调用的方法

    JavaScript中可以使用function定义一个函数,同时也可以使用function定义一个对象。这种方式定义的对象被称为“构造函数”,使用new关键字调用这个构造函数就可以生成一个新的对象。 定义构造函数 下面是一个定义构造函数的示例代码: function Person(name, age) { this.name = name; this.age…

    JavaScript 2023年5月27日
    00
  • JS实现电话号码的字母组合算法示例

    JS实现电话号码的字母组合算法示例可以用来解决以下问题:给定一个数字字符串,返回该数字字符串代表的电话号码的所有字母组合。 算法思路 该算法可以使用递归的方式进行实现。在递归过程中,所有可能的组合都存储在一个数组中,初始值为[“”]。在每次递归过程中,取出数组中的第一个元素,根据当前数字所代表的字母,依次添加到该元素的末尾,生成新的字符串插入到数组中。具体实…

    JavaScript 2023年5月28日
    00
  • 硬件工程师培训教程(一)

    硬件工程师培训教程(一)——完整攻略 一、学习前的准备 在学习硬件工程师培训教程前,需要具备以下基础: 熟悉基本的电路学知识,如欧姆定律、基本电路等; 具备基本的编程语言知识,如C语言等; 熟悉常见的硬件电路元器件,如电阻、电容等。 二、学习内容 1. 掌握硬件设计流程 硬件设计流程主要包括需求分析、电路设计、PCB设计、调试等环节。理解这些环节的意义和流程…

    JavaScript 2023年5月19日
    00
  • 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例

    5个数组Array方法:indexOf、filter、forEach、map、reduce使用实例 一、介绍 数组是JavaScript中最常用的数据类型之一。使用数组的时候,我们经常需要使用到一些方法对数组进行操作,比如获取某个元素的下标、筛选元素、遍历元素、处理元素等等。本篇攻略将详细讲解五个数组Array方法:indexOf、filter、forEac…

    JavaScript 2023年5月27日
    00
  • vue + typescript + 极验登录验证的实现方法

    这里是详细的“vue + typescript + 极验登录验证的实现方法”攻略。 简介 极验验证码是一种常用于网站登录等安全验证的方式。而Vue是一种流行的JavaScript框架,Typescript是JavaScript的一个超集,在开发中更加规范和安全。如何在Vue项目中集成极验验证码以提高网站的安全性呢?下面是实现方法的具体步骤。 步骤一:安装极验…

    JavaScript 2023年6月11日
    00
  • 浅谈JS闭包中的循环绑定处理程序

    下面是关于“浅谈JS闭包中的循环绑定处理程序”的详细攻略。 什么是闭包 闭包指的是一个函数可以访问并修改它所在的词法作用域中的变量,即使这个函数在它所在的词法作用域外被调用。在 JavaScript 中,函数就是闭包。 为什么需要闭包 JavaScript 中引入闭包的一个重要原因是函数作用域的变量是“静态”绑定的,即它们与它们所在的上下文是在它们被定义和分…

    JavaScript 2023年6月10日
    00
  • Javascript中获取出错代码所在文件及行数的代码

    在Javascript代码中,有时候我们需要知道出错的代码所在的文件和行数。这个问题可以通过在代码中添加一些特定的指令来实现。下面是实现此功能的完整攻略: 步骤1: 这个功能需要运行在浏览器环境下。打开浏览器的控制台,找到“Console”面板,在里面输入以下代码: console.log(‘出错了’); throw new Error(‘错误信息’); 这…

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