JavaScript实现表单验证示例

下面是针对“JavaScript实现表单验证示例”的完整攻略:

1. 表单验证的基本思路

前端表单验证的基本思路是,当用户提交表单时,先阻止表单的默认提交行为,然后通过JavaScript对表单进行内容的检测和验证,如果发现问题,则提示用户并阻止表单的提交。否则,允许表单进行提交操作。

通常,表单验证的实现流程如下:

  1. 针对表单的提交事件进行监听;
  2. 在提交事件触发时,获取表单中需要验证的输入项;
  3. 对这些输入项进行验证操作;
  4. 如果验证出现问题,则阻止表单的提交,并给出相应提示信息;
  5. 如果验证未出现问题,则允许表单继续进行提交操作。

2. 表单验证的实现示例

下面提供两个针对不同情况的表单验证实现示例:

2.1. 普通表单验证

首先,我们来看一个基于普通表单的验证示例。假设有一个登录表单,需要对用户名和密码进行验证。代码如下:

<form id="login-form">
    <label>用户名:</label><input type="text" name="username" id="username"><br/>
    <label>密码:</label><input type="password" name="password" id="password"><br/>
    <input type="submit" value="登录">
</form>

此时,我们需要对这两个输入项进行验证。我们可以采用以下方式:

var loginForm = document.getElementById('login-form');
loginForm.onsubmit = function() {
    var username = document.getElementById('username');
    var password = document.getElementById('password');
    if (username.value === '') {
        alert('请输入用户名!');
        return false;
    }
    if (password.value === '') {
        alert('请输入密码!');
        return false;
    }
    // 如果验证通过,允许表单提交
    return true;
}

在这个示例中,我们获取了登录表单,并为其onsubmit事件绑定了一个匿名函数。当用户点击登录按钮时,这个函数就会被触发,我们在函数中用document.getElementById方法获取用户名和密码输入项的值,并针对这两个值进行判断。如果用户名或密码中出现了空值,则使用alert对用户进行提示,并返回false阻止表单的提交。否则,返回true允许表单提交。

2.2. 复杂表单验证

接下来,我们来看一个较为复杂的表单验证示例。假设有一个注册表单,需要对用户输入的账号、密码和邮箱分别进行格式和唯一性校验。具体来说,要求:

  1. 账号只能包含数字、字母和下划线,长度在6~16个字符之间,并且不能重复;
  2. 密码必须由数字、字母、特殊字符三类字符组成,长度在8~20个字符之间;
  3. 邮箱必须符合标准的邮箱格式,且不能重复。

对于这样的复杂表单验证,我们可以编写如下的JS代码来实现:

<form id="register-form">
    <label>账号:</label><input type="text" name="account" id="account"><span id="account-tip"></span><br/>
    <label>密码:</label><input type="password" name="password" id="password"><span id="password-tip"></span><br/>
    <label>邮箱:</label><input type="email" name="email" id="email"><span id="email-tip"></span><br/>
    <input type="submit" value="注册">
</form>
// 获取表单和提示信息元素
var registerForm = document.getElementById('register-form');
var accountTip = document.getElementById('account-tip');
var passwordTip = document.getElementById('password-tip');
var emailTip = document.getElementById('email-tip');

// 给输入框绑定失去焦点的事件,进行格式校验
document.getElementById('account').onblur = function() {
    var account = this.value;
    if (!/^[a-zA-Z0-9_]{6,16}$/.test(account)) {
        accountTip.innerHTML = '账号格式错误(只能包含数字、字母和下划线,长度在6~16个字符之间)';
        return;
    }
    // 发送AJAX请求,判断账号是否重复
    accountTip.innerHTML = '正在检查账号是否已经被使用……';
    sendAjax('get', '/checkAccount?account=' + account, function(result) {
        if (result === 'exist') {
            accountTip.innerHTML = '对不起,该账号已经被使用了!';
        } else {
            accountTip.innerHTML = '账号检查通过';
        }
    });         
}
document.getElementById('password').onblur = function() {
    var password = this.value;
    if (!/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z@#\$%\^\&\*\?]{8,20}$/.test(password)) {
        passwordTip.innerHTML = '密码格式错误(须包含数字、大小写字母及特殊字符,长度在8~20个字符之间)';
        return;
    }
    passwordTip.innerHTML = '密码格式正确';
}
document.getElementById('email').onblur = function() {
    var email = this.value;
    if (!/^[a-zA-Z0-9._-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9]{2,6}$/.test(email)) {
        emailTip.innerHTML = '邮箱格式错误';
        return;
    }
    // 发送AJAX请求,判断邮箱是否重复
    emailTip.innerHTML = '正在检查邮箱是否已经被使用……';
    sendAjax('get', '/checkEmail?email=' + email, function(result) {
        if (result === 'exist') {
            emailTip.innerHTML = '对不起,该邮箱已经被使用了!';
        } else {
            emailTip.innerHTML = '邮箱检查通过';
        }
    });         
}

// 对表单的提交操作进行监听
registerForm.onsubmit = function() {
    // 获取输入项
    var account = document.getElementById('account');
    var password = document.getElementById('password');
    var email = document.getElementById('email');
    // 验证输入项
    if (accountTip.innerHTML !== '账号检查通过') {
        alert('请检查账号是否符合要求!');
        return false;
    }
    if (passwordTip.innerHTML !== '密码格式正确') {
        alert('请检查密码是否符合要求!');
        return false;
    }
    if (emailTip.innerHTML !== '邮箱检查通过') {
        alert('请检查邮箱是否正确!');
        return false;
    }
    // 如果所有验证通过,允许表单提交
    return true;
}

在这个示例中,我们首先为输入框分别绑定了失去焦点事件的函数,用来进行输入格式的验证,并通过AJAX向服务端发送请求来判断输入项是否唯一。然后,在表单的提交事件中,我们为表单绑定了一个函数,来验证用户所有的输入项,如果验证未通过,则使用alert提示用户进行检查,并返回false阻止表单的提交。否则,返回true允许表单提交。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现表单验证示例 - Python技术站

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

相关文章

  • javascript 伪数组实现方法

    下面是关于Javascript伪数组实现方法的详细攻略。 什么是Javascript伪数组? Javascript中的伪数组是一个类数组对象(array-like object),它具有一个length属性和一些从0开始的数字索引,但是它没有数组对象的方法,比如push、pop、splice等。它一般用来存储一系列数据,但没有需要数组方法的操作时,就可以使用…

    JavaScript 2023年5月27日
    00
  • JS中判断某个字符串是否包含另一个字符串的五种方法

    下面我会给您详细讲解JS中判断某个字符串是否包含另一个字符串的五种方法,并提供相应代码示例进行说明。 方法一:使用indexOf indexOf函数在判断字符串包含的时候是最常用的方法之一,它返回的值为所查找的字符串首次出现的位置,如果没有找到则返回-1。 let str1 = "hello world"; let str2 = &quo…

    JavaScript 2023年5月28日
    00
  • JavaScript字符串对象substring方法入门实例(用于截取字符串)

    JavaScript字符串对象substring方法入门实例(用于截取字符串) 什么是substring方法 JavaScript字符串对象的substring()方法是用于截取字符串的一种方式,该方法可以返回一个新的字符串,其内容是从原始字符串中指定的位置开始到另一个指定位置之间的字符。 substring方法的语法 字符串对象substring方法具有以…

    JavaScript 2023年5月28日
    00
  • JS Thunk 函数的含义和用法实例总结

    JS Thunk 函数实际上是一种特殊的函数,它将一个多参数函数转换成一个只接受回调函数为参数的单参函数。目的是为了让函数的执行结果可以通过回调函数来获取。 使用 Thunk 函数可以有效地处理异步操作,使得回调嵌套不那么深,也更容易进行错误捕捉。以下将详细解释 Thunk 函数的含义和用法实例总结。 1. 概念 1.1 Thunk 函数的定义 Thunk …

    JavaScript 2023年5月27日
    00
  • javascript:history.go()和History.back()的区别及应用

    下面是“javascript:history.go()和History.back()的区别及应用”的完整攻略。 什么是history.go()和history.back()? history.go()和history.back()是JavaScript中操作浏览器历史记录的方法,它们都属于浏览器对象的一部分,即window.history对象。其中,hist…

    JavaScript 2023年6月11日
    00
  • JavaScript闭包中难点深入分析

    JavaScript闭包是一种强大的编程概念,但也很容易引起混淆和错误。在本文中,我们将讨论闭包的一些难点,并提供两个示例来说明在使用闭包时需要注意的问题。 什么是闭包 闭包是指在函数内部定义的函数,该函数可以访问外部函数的变量和参数。具体来说,闭包可以捕获其在定义时所在的词法环境中的任何变量,并保持对这些变量的引用,无论在何处执行该闭包函数,都可以使用这些…

    JavaScript 2023年6月10日
    00
  • js鼠标点击图片实现随机变换图片的方法

    下面我来详细讲解一下“js鼠标点击图片实现随机变换图片的方法”的完整攻略。 1.准备工作 在开始实现之前,我们需要准备好一些资源,例如要使用的图片以及相应的代码框架。具体步骤如下: 1.1 准备图片资源 首先,我们需要准备一些图片资源。为了节省时间和便于操作,我们可以选择一些预设好的图片资源,例如https://picsum.photos/ 网站上提供的随机…

    JavaScript 2023年6月11日
    00
  • js创建对象的几种常用方式小结(推荐)

    下面是“js创建对象的几种常用方式小结(推荐)”的完整攻略。 1. 前言 在 JavaScript 中,创建对象是非常常见的操作之一。为了能够从不同的角度去看待对象创建的方式,不同的方法也应运而生。接下来,我们将会一一讨论对象创建方式的优缺点,以及使用场景。 2. 第一种常用方式:对象字面量 对象字面量是最常见和最简单的方式,由任意数量的“名称/值”对组成。…

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