input type="password" name="password" id="password" required=" - 旺道.商弈:专注于软件系统开发,为客户提供有价值的知识变现付费、网课、场地预订、服务预约、设备租赁等APP应用、小程序、H5微站网站系统.东莞市环企网络信息科技有限公司品牌网站" />
  • 微信:WANCOME
  • 扫码加微信,提供专业咨询
  • 服务热线
  • 0769-23063100
    13027920428

  • 微信扫码访问本页

做网站-表单验证JS插件validator

旺道.商弈 -> 正文

jQuery.validator是一款非常不错的表单验证插件,验证方式非常简单方便


一、在元素的class属性中添加需要验证的规则,多个规则以空格隔开

<label>邮箱:</label><input class="required email" type="text" name="email">

required: // 必填
email: // 邮箱地址
url: // url地址
date: // 日期
dateISO: // ISO格式的日期(2014/08/27 或 2014-08-27)
number: // 数字(负数,正数,小数,整数)
digits: // 正整数
creditcard: // 信用卡


二、将要验证的规则作为元素的属性

<label for="userName">用户名:</label>
<input
name="userName"
id="userName"
required
remote="ajax requestUrl"
>
<label for="password1">密码:</label>
<input
type="password"
name="password1"
id="password1"
required
rangelength="6,12"
>
<label for="password2">请再次输入密码:</label>
<input
type="password"
name="password2"
id="password2"
required
equalTo="#password1"
>
required:        // 必填
email:           // 邮箱地址
url:             // url地址
date:            // 日期
dateISO:         // ISO格式的日期(2014/08/27 或 2014-08-27)
number:          // 数字(负数,正数,小数,整数)
digits:          // 正整数
creditcard:      // 信用卡// 注意,在元素上将规则作为元素的属性,除了 required ,以上规则都需要赋值,如:
minlength:       // 输入字符最小长度(中文算一个字符)
maxlength:       // 输入字符最大长度(中文算一个字符)
rangelength:     // 输入字符最小,最大长度(中文算一个字符)
min:             // 数值最小值
max:             // 数值最大值
range:           // 数值最小,最大值
equalTo:         // 再次输入相同的值
remote:          // 发送ajax请求验证(常用案例就是在注册时,验证用户名是否存在),                 // 注:请求返回的 response === true || response === 'true',才算验证通过,这需要后端的配合

jQuery.validator内部做了很多处理,下面写法都是可以的

<input 
type="password"
name="password1"
id="password1"
required
rangelength="6,12"
>

<input
type="password"
name="password1"
id="password1"
required=""
rangelength="6, 12"
>

<input
type="password"
name="password1"
id="password1"
required
rangelength="6 12"
>

<input
type="password"
name="password1"
id="password1"
required="true"
rangelength="[6,12]"
>

同时还支持HTML5的type属性

<input 
type="url"
name="url"
required>

<input
type="number"
name="number"
required>

<input
type="email"
name="email"
required>

注意:不支持 type="range" 的 input 控件,这是因为需要比较最大,最小值,而不只是简单的正则验证


四、在配置对象中,传递要验证的规则

<form id="validForm">
    <input type="text" name="userName">
    <input type="text" name="email">
    <input type="submit" value="提交">
</form>
 $('#validForm').validate({
// 每一个name值对应一组规则 userName: {    required: true,    rangelength: [4,10],    remote: ''    // ajax请求地址 }, email: {    required: true,    email: true }});

五、自定义验证规则

使用 $.validator.addMethod( name, method, message ), 便可以添加自定义规则
如:我要自定义一条验证手机号码的规则:

$.validator.addMethod('mobile', function( value, element ){

    // /^1\d{10}$/ 来自支付宝的正则
    return this.optional( element ) || /^1\d{10}$/.test( value );}, '请输入正确的手机号码');

六、其他( 处理频繁请求ajax的操作 )

情景1:关注与取消关注,这种需求需要处理连续 多个ajax请求的关系
我之前的处理是上一个ajax请求完毕了,才去响应用户的下一次单击操作,即再次发送ajax请求

情景2:jQuery.validator源码中的例子
如果验证规则是 remote ,发送ajax请求验证,由于插件在keyUp事件中会触发验证,那么当keyUp频繁的触发,ajax就会请求很多很多次啦,这就涉及到处理连续多个ajax请求的问题,
即:上一次ajax请求还没完成,紧接着又发送ajax请求,这样是不是有点凌乱呢,jQuery.validator是这样做的,将上一次未响应的ajax请求中断,这样只会在最后一次keyUp事件中发送ajax验证
比较:想想情景1的例子,第二种处理方式更好,因为情景1的处理,可能会在最后一次单击事件无响应,不会触发ajax请求,造成用户体验不好,这是因为在最后一次单击事件中,上一次ajax请求还未完成(响应)



PS:

jQuery.validator有四种为表单控件添加验证规则的方式,其内部实现是按 class, attribute, jQuery.fn.data, 配置对象依次叠加的,后面途径添加的规则会覆盖前面添加的规则;
如果有多个表单控件的name属性值相同(属性值包含''),除第一个表单控件会验证,后面name属性值相同的表单控件验证将会忽略;


往期热点文章:

   

      # BrowserSync-浏览器同步测试工具

      # 做网站-第三方微信登录

      # Http中GET和POST请求的区别

      # http请求生命周期流程

      # Redis的安装与配置

      # 做网站-Http状态码详解

      # crontab定时任务语法及应用

      # MySQL中MyISAM与InnoDB区别及选择

做网站公众平台(zwangz888)每天为您分享原创Web开发资讯,开发经验,为您的技能充电。期待您的关注与分享,同时欢迎您留言,让我们每天进步一点点!

陈春花:营销的根本在于理解消费者

巨变时代,企业曾经行之有效的经验和方法也许不再有效,营销需要做合适的事情,其根本在于理解消费者,在创造顾客价值上的有所作为。春暖花开市场经济环境

生意有术(NO.24):像素级模仿顶尖高手

所以,很多人会热衷于报这个班,报那个班,各种的认识人,这一定程度上是急性“学习狂热症”,很容易造成迷失,迷失在各种方法体系里,有的东西却彼此相悖

穷人变富需要具备的四大能力,你有吗?1 抗拒诱惑游戏、视频、麻将-今日头条

穷人变富需要具备的四大能力,你有吗?1 抗拒诱惑游戏、视频、麻将、小说等等这些东西无时不刻诱惑着我们。穷人若想变富,必须要把精力和时间用在学习知

程序员三大基础思维简谈:协议、接口和分层

不管是硬件设备、软件概念或者是网络通讯中,协议、接口无处不在,软件系统离不开分层模型。协议和分层,各种课程都有涉及,但可惜的是,很多计算机类专业

老实人做生意做不好是有原因的:人家给你钱,你都不敢收!

这里面底层的差别在哪里,你有两个问题需要及时去解决:第一:你不会收钱;要做到这点,咱们必须得找到自己的价值,同时,还得让客户认识到你的价值。

Google 在中国大陆上线官方镜像资源站,为开发者提供访问和支持

摘要: Google 中国近日在其运营的公众号「谷歌开发者」中发布公告:目前国内开发者可通过 google.cn 直接访问 web.dev 以及... ...

生意之道:想赚大钱,就要学会与人分钱

只要你得到了好处 ,你就一定要分给别人,你只要每次都给了别人好处,你就会有源源不断的生意,就会源源不断地赚到许多莫名其妙的钱财,哈哈,这个莫名其... ...

2024流量共生,公域做规模,私域要复利

公域和私域是共生关系,在单独探讨一方时候总不自觉地思考与另一方的关系和联动。有很多企业两者之间会有所侧重,比如重公域销售,跑通投产比就持续放大,... ...

Nginx 常用配置汇总!从入门到干活足矣

众所周知,Nginx 是 Apache服务不错的替代品。其特点是占有内存少,并发能力强,事实上 Nginx 的并发能力在同类型的网页服务器中表现... ...

分布式架构和微服务架构的区别

1、含义不同微服务架构是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中。分布式系统是若干独立计算机的集合,这些计算机... ...

大屏可视化综合展示平台解决方案

概述建立大屏可视化综合展示平台,构建各业务板块统一的大数据分析平台,构建数据驾驶舱与智慧调度平台。深入探索挖掘企业的客户信息数据,以“大数据”理... ...

Ideogram:一款秒杀Midjourney,免费无限生成的AI绘画神器

导读:Ideogram AI是一个文本生成图片的平台,它最大的优点就是好用、免费又没有生成限制,因此可以秒杀MJ和SD。AI绘画是人工智能领域的... ...

陈春花:营销的根本在于理解消费者

巨变时代,企业曾经行之有效的经验和方法也许不再有效,营销需要做合适的事情,其根本在于理解消费者,在创造顾客价值上的有所作为。春暖花开市场经济环境... ...

穷人变富需要具备的四大能力,你有吗?1 抗拒诱惑游戏、视频、麻将-今日头条

穷人变富需要具备的四大能力,你有吗?1 抗拒诱惑游戏、视频、麻将、小说等等这些东西无时不刻诱惑着我们。穷人若想变富,必须要把精力和时间用在学习知... ...

ChatGPT时代,重新定义官网

ChatGPT时代已来,人机之间用自然语言交流成为现实,用户表达需求的方式可以更自然、更直接。那么,各大网站上复杂的导航栏设计、重复性极高的筛选... ...

小红书高时效推荐系统背后的技术升级

在小红书 APP 中,推荐系统的实效性对推荐效果有着特别重要的影响,特别是作为 UGC 平台,小红书的推荐系统如果能更快地捕捉用户与笔记之间的变... ...

你的店铺真的盈利了吗?万能「烘焙运营公式」奉上!

面包王子说:做好一个店铺,并不只是运营店铺,而是在做一家企业,门店需要一家企业所要拥有的一切。包括:组织能力、战略能力和营销能力的三大方向。我们... ...