JavaScript实现表单验证示例

yizhihongxing

下面是针对“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日

相关文章

  • JS实现两周内自动登录功能

    实现两周内自动登录的功能需要涉及到一些技术点,下面是完整的攻略: 技术点 Cookie / LocalStorage:用于保存登录状态和用户信息,以及判断用户是否已登录。 路由拦截:在用户未登录的情况下,将其重定向至登录页面。可以通过 Vue Router 的全局前置守卫实现。 Token 认证:为了保证用户信息的安全性,一般需要在后台生成一个 Token,…

    JavaScript 2023年6月11日
    00
  • 解决vue中使用history.replaceState 更改url vue router 无法感知的问题

    在Vue Router中,要想改变URL但不重新加载页面,可以使用history.pushState()或history.replaceState()方法。但有时使用history.replaceState()方法更改URL后,Vue Router可能无法感知URL的改变,从而不会更新视图,这可能是由于缺少路由监视或未调用Vue Router API的原因。…

    JavaScript 2023年6月11日
    00
  • flash javascript之间的通讯方法小结

    Flash JavaScript之间的通讯方法小结 在开发网络应用程序的过程中,我们常常需要使用Flash和JavaScript之间的通讯。下面是一些常见的通讯方法。 1. ExternalInterface ExternalInterface 类是Flash和JavaScript之间通讯的最基本的方法,它提供了一个双向的接口,可以在Flash和JavaSc…

    JavaScript 2023年6月11日
    00
  • javascript禁止访客复制网页内容的实现代码

    实现禁止访客复制网页内容的功能,可以使用javascript的一些方法来实现。下面是具体的实现攻略。 方案一:禁止复制内容 我们可以通过覆盖系统自带的复制事件的方式来实现禁止复制功能。具体步骤如下: 1. 绑定复制事件 使用Javascript绑定copy事件,添加事件回调函数。代码如下: document.addEventListener("co…

    JavaScript 2023年6月10日
    00
  • JavaScript中for循环的几种写法与效率总结

    以下是详细的攻略: JavaScript中for循环的几种写法与效率总结 1. for循环基本语法 for (let i = 0; i < length; i++) { // 循环体 } 其中,let i = 0 表示初始化一个变量 i ,初始值为 0 ; i < length 表示循环条件,当 i 小于 length 时,执行循环体; i++ …

    JavaScript 2023年5月28日
    00
  • JavaScript实现的多种鼠标拖放效果

    下面我就为你详细讲解一下JavaScript实现多种鼠标拖放效果的攻略: 简介 鼠标拖放是前端开发中常用的功能,它给用户带来了便利,同时也提高了用户体验。JavaScript是前端开发中最常用的语言之一,所以我们可以通过JavaScript来实现鼠标拖放效果。 方法 实现鼠标拖放效果可以使用HTML5的Drag和Drop API,也可以使用原生JavaScr…

    JavaScript 2023年6月10日
    00
  • 用window.onerror捕获并上报Js错误的方法

    下面是完整攻略: 什么是window.onerror? window.onerror是JavaScript的全局错误事件,它会在页面中出现JavaScript错误时触发。 为什么要用window.onerror? 使用window.onerror可以捕获和上报所发生的JavaScript错误,有助于我们及时了解并修复代码中的问题,提高网站的稳定性和用户体验。…

    JavaScript 2023年5月28日
    00
  • 使用JavaScript通过前端发送电子邮件

    下面是“使用JavaScript通过前端发送电子邮件”的完整攻略: 1.准备工作 要通过前端使用JavaScript发送电子邮件,你需要使用邮件服务提供商的API,本文以SendGrid为例进行说明。在使用SendGrid之前,你需要完成以下准备工作: 注册SendGrid账户并创建API密钥 创建一个用于发送邮件的HTML表单 2.获取API密钥 在Sen…

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