jQuery验证及限制

绑定键盘监听事件


  1. $(document).on("keypress", ".txt-valid-len", function (e)
  2. {
  3. return (this.value.length < $(this).attr("maxlength"));
  4. });

输入框设置

  • 然后我们只需要在input中添加txt-valid-len这个class属性。并且加入maxlength属性指定长度就可以了。
  1. <input type="text" id="user_name" name="name" class="form-control txt-valid-len" maxlength="11" />
  • 上面的代码的意思就是这个输入框长度限制在11位,超过11位就不显示了。如果想在超过11位进行提示。可以扩展上面的监听事件。

jquery表单提交验证

  • 在开发中我们前台经常需要在与后台交互前进行相关数据的验证。这样可以减少服务端的压力。下面我们来看看jquery给我们提供的表单验证的方法。

引入脚本文件

  1. jquery.min.js
  2. jquery.validate.js
  • 这两个js在官网的jQuery中都是包含的,直接下载引入就行了。

  • 有了这两个js我们还需要页面上的form表单。表单就是我们平常的表单。

  1. <form id="myform" method="post" action="#">
  2. <p>
  3. <label for="myname">用户名:</label>
  4. <!-- id和name最好同时写上 -->
  5. <input id="myname" name="myname" />
  6. </p>
  7. <p>
  8. <label for="age">年龄:</label>
  9. <input id="age" name="age" />
  10. </p>
  11. <p>
  12. <label for="email">E-Mail:</label>
  13. <input id="email" name="email" />
  14. </p>
  15. <p>
  16. <label for="password">登陆密码:</label>
  17. <input id="password" name="password" type="password" />
  18. </p>
  19. <p>
  20. <label for="confirm_password">确认密码:</label>
  21. <input name="confirm_password" type="password" />
  22. </p>
  23. <p>
  24. <input class="submit" type="submit" value="立即注册" />
  25. </p>
  26. </form>

自定义js实现表单验证(利用jQuery提供内置方法)

  • 首先我们通过jQuery提供的选择器找到我们需要验证的表单
  1. $("#myform").validate();
  • 就这样我们就完成了表单验证。当然啦,到这里只是架子打好了。下面我们开始在validate中填写我们的验证规则了。
  1. $("#myform").validate({
  2. debug: true, //调试模式取消submit的默认提交功能
  3. //errorClass: "label.error", //默认为错误的样式类为:error
  4. focusInvalid: false, //当为false时,验证无效时,没有焦点响应
  5. onkeyup: false,
  6. submitHandler: function(form){ //表单提交句柄,为一回调函数,带一个参数:form
  7. alert("提交表单");
  8. form.submit(); //提交表单
  9. },
  10. rules:{
  11. myname:{
  12. required:function(element){
  13. if( $("#age").val() < 13){
  14. return true;
  15. }
  16. else{
  17. return false;
  18. }
  19. }
  20. },
  21. email:{
  22. required:true,
  23. email:true
  24. },
  25. password:{
  26. required:true,
  27. rangelength:[3,10]
  28. },
  29. confirm_password:{
  30. equalTo:"input[name=password]"
  31. }
  32. },
  33. messages:{
  34. myname:{
  35. required:"必填"
  36. },
  37. email:{
  38. required:"<span style='color:red;'>只允许输入整数。</span>",
  39. email:"E-Mail格式不正确"
  40. },
  41. password:{
  42. required: "不能为空",
  43. rangelength: $.validator.format("密码最小长度:{0}, 最大长度:{1}。")
  44. },
  45. confirm_password:{
  46. equalTo:"两次密码输入不一致"
  47. }
  48. }
  49. });
  • 其中的rules就是我们验证规则内容。其中的myname,email…是我们form需要验证的控件的name属性值(并不是ID属性值),还有我们的提示信息可以做的花哨一点加入样式
  1. <span style='color:red;'>只允许输入整数。</span>
  • 至于这些验证规则我们可以在jquery-validate.js中找到。里面messages属性的提示信息我们都是可以用来做验证的.

动态决定验证规则

  • 上面的myname的required的验证是根据id=age的input框的值得变化决定的,就是说你输入的年龄小于13岁myname是需要验证的。大于则反之。如果你想做的像更美化我们可以在年龄input中绑定一个失去焦点的时间(blur),在输入完年龄我们就立马去验证myname的input框的规则,通过调用
  1. $("#myname").valid();
  • 就会去按照我们的规则去验证myname这个字段的input的值。

通过远程进行验证

前台

  • 对上面的进行如下的修改,其中remote就是我们的远程请求,该请求返回的true,则验证通过,false反之。
  1. $("#myform").validate({
  2. rules: {
  3. email: {
  4. required: true,
  5. email: true,
  6. remote: {
  7. type:"post",
  8. dataType: "json",
  9. contentType : "application/json",
  10. url:"/adminManage/email.bsh"
  11. }
  12. }
  13. }
  14. });

后台

  • 这的注意的是remote这里的请求格式有些要求,这个url返回的数据必须是json格式的。但是后台只能返回string或者boolean类型的数据。如果返回的是string内容的json,那么string是true则验证通过,若果不是true则验证提示就是你返回的string内容。如果是boolean,是true则验证通过,false验证失败。
  1. @RequestMapping("/email.bsh")
  2. @ResponseBody
  3. public Object email(HttpServletRequest request,HttpServletResponse response)
  4. {
  5. return "已经存在";
  6. }
  • 前台提示已经存在,会覆盖前台默认的提示内容
  1. @RequestMapping("/email.bsh")
  2. @ResponseBody
  3. public Object email(HttpServletRequest request,HttpServletResponse response)
  4. {
  5. return "true";
  6. }
  • 验证通过
  1. @RequestMapping("/email.bsh")
  2. @ResponseBody
  3. public Object email(HttpServletRequest request,HttpServletResponse response)
  4. {
  5. return true;
  6. }
  • 验证通过
  1. @RequestMapping("/email.bsh")
  2. @ResponseBody
  3. public Object email(HttpServletRequest request,HttpServletResponse response)
  4. {
  5. return false;
  6. }
  • 验证失败,前台将提示默认的信息

参考网址

验证提示信息的显示位置

  • 在上面一节我们详细介绍了验证的规则及提示实现。那么提示信息的位置有时候也是很重要的,我们控制的好的话界面会很美观的。
  1. var validator = $("#myform").validate({
  2. debug: true, //调试模式取消submit的默认提交功能
  3. errorClass: "haha",//默认为错误的样式类为:error
  4. focusInvalid: false,
  5. onkeyup: false,
  6. submitHandler: function(form){ //表单提交句柄,为一回调函数,带一个参数:form
  7. alert("提交表单");
  8. //form.submit(); 提交表单
  9. },
  10. rules: { //定义验证规则,其中属性名为表单的name属性
  11. username: {
  12. required: true,
  13. minlength: 2,
  14. remote: "uservalid.jsp" //传说当中的ajax验证
  15. },
  16. firstpwd: {
  17. required: true,
  18. //minlength: 6
  19. rangelength: [6,8]
  20. },
  21. secondpwd: {
  22. required: true,
  23. equalTo: "#password"
  24. },
  25. sex: {
  26. required: true
  27. },
  28. age: {
  29. required: true,
  30. range: [0,120]
  31. },
  32. email: {
  33. required: true,
  34. email: true
  35. },
  36. purl: {
  37. required: true,
  38. url: true
  39. },
  40. afile: {
  41. required: true,
  42. accept: "xls,doc,rar,zip"
  43. }
  44. },
  45. messages: { //自定义验证消息
  46. username: {
  47. required: "用户名是必需的!",
  48. minlength: $.format("用户名至少要{0}个字符!"),
  49. remote: $.format("{0}已经被占用")
  50. },
  51. firstpwd: {
  52. required: "密码是必需的!",
  53. rangelength: $.format("密码要在{0}-{1}个字符之间!")
  54. },
  55. secondpwd: {
  56. required: "密码验证是必需的!",
  57. equalTo: "密码验证需要与密码一致"
  58. },
  59. sex: {
  60. required: "性别是必需的"
  61. },
  62. age: {
  63. required: "年龄是必需的",
  64. range: "年龄必须介于{0}-{1}之间"
  65. },
  66. email: {
  67. required: "邮箱是必需的!",
  68. email: "请输入正确的邮箱地址(例如 myemail@163.com)"
  69. },
  70. purl: {
  71. required: "个人主页是必需的",
  72. url: "请输入正确的url格式,如 http://www.domainname.com"
  73. },
  74. afile: {
  75. required: "附件是必需的!",
  76. accept: "只接收xls,doc,rar,zip文件"
  77. }
  78. },
  79. errorPlacement: function(error, element) { //验证消息放置的地方
  80. error.appendTo( element.parent("td").next("td") );
  81. },
  82. highlight: function(element, errorClass) { //针对验证的表单设置高亮
  83. $(element).addClass(errorClass);
  84. },
  85. success: function(label) {
  86. label.addClass("valid").text("Ok!")
  87. }
  88. /*,
  89. errorContainer: "#error_con", //验证消息集中放置的容器
  90. errorLabelContainer: "#error_con ul", //存放消息无序列表的容器
  91. wrapper: "li", //将验证消息用无序列表包围
  92. validClass: "valid", //通过验证的样式类
  93. errorElement: "em", //验证标签的名称,默认为:label
  94. success: "valid" //验证通过的样式类
  95. */
  96. });

重构规则

不论什么时候,当你的表单中的多个字段含有相同的验证规则及验证消息,重构规则可以减少很多重复。使用 addMethod 和 addClassRules 将非常有效果。

假使已经重构了如下规则:

  1. // alias required to cRequired with new message
  2. $.validator.addMethod("cRequired", $.validator.methods.required,
  3. "Customer name required");
  4. // alias minlength, too
  5. $.validator.addMethod("cMinlength", $.validator.methods.minlength,
  6. // leverage parameter replacement for minlength, {0} gets replaced with 2
  7. $.format("Customer name must have at least {0} characters"));
  8. // combine them both, including the parameter for minlength
  9. $.validator.addClassRules("customer", { cRequired: true, cMinlength: 2 });
  10. <input name="customer1" class="customer" />
  11. <input name="customer2" class="customer" />
  12. <input name="customer3" class="customer" />

adMethod

addMethod( name, method, [message] )

返回:undefined

参数 name 类型:String

要添加的方法名,用于标识和引用,必须是一个有效的javascript标识符。

参数 method 类型:Callback 方法的实现部分,返回true如果表单元素通过验证。

参数 message(Optional) 类型:String, Function 该方法的默认验证消息。可以用 jQuery.validator.format(value) 方法创建。如果未定义该参数,则使用本地已存在的验证消息,另外,必须为指定的表单元素定义验证消息。

说明:添加一个用户自定义的验证方法。它由方法名(必须是一个合法的javascript标识符)、基于javascript的函数及默认的验证消息组成。

addClassRules( name, rules )

返回:undefined

参数 name 类型:String 要添加的样式规则名。

参数 rules 类型:Options 规则选项。

说明:添加一个复合的样式验证方法。对于将多个联合使用的规则重构进单个样式中非常有用。

jquery验证大全的更多相关文章

  1. 转 jquery插件--241个jquery插件—jquery插件大全

    241个jquery插件—jquery插件大全 jquery插件jqueryautocompleteajaxjavascriptcoldfusion jQuery由美国人John Resig创建,至今 ...

  2. ASP.NET MVC的客户端验证:jQuery验证在Model验证中的实现

    在简单了解了Unobtrusive JavaScript形式的验证在jQuery中的编程方式之后,我们来介绍ASP.NET MVC是如何利用它实现客户端验证的.服务端验证最终实现在相应的ModelVa ...

  3. jquery验证

    首先要引用js库 <script src="js/jquery-1.7.2.min.js"></script> jquery验证方式 function ch ...

  4. jQuery验证元素是否为空的两种常用方法

    这篇文章主要介绍了jQuery验证元素是否为空的两种常用方法,实例分析了两种常用的判断为空技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了jQuery验证元素是否为空的两种常用方法.分享给 ...

  5. jQuery选择器大全(48个代码片段+21幅图演示)

    选择器是jQuery最基础的东西,本文中列举的选择器基本上囊括了所有的jQuery选择器,也许各位通过这篇文章能够加深对jQuery选择器 的理解,它们本身用法就非常简单,我更希望的是它能够提升个人编 ...

  6. jquery验证手机号码、邮箱格式是否正确示例代码

    本文为大家介绍下使用jquery验证邮箱.验证手机号码,具体实现思路及代码如下,感兴趣的朋友可以学习下 复制代码代码如下: //jquery验证邮箱  function checkSubmitEmai ...

  7. jquery验证网址格式

    在input中输入网址,用jquery验证输入网址是否正确 <input type="text" name="input-web" class=" ...

  8. 使用jQuery验证用户名是否存在,达到局部刷新的效果

    <%@ page pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...

  9. jQuery验证框架 .

          目录视图 摘要视图 订阅 “程序人生”中国软件开发者职业生涯调查     CSDN社区“三八节”特别活动      开发者职业生涯调查之未来 jQuery验证框架 分类: JQuery 2 ...

随机推荐

  1. 02(e)多元无约束优化问题- 梯度的两种求解方法以及有约束转化为无约束问题

    2.1 求解梯度的两种方法 以$f(x,y)={{x}^{2}}+{{y}^{3}}$为例,很容易得到: $\nabla f=\left[ \begin{aligned}& \frac{\pa ...

  2. EPG开发《异常排查以及解决方案》

    [框架]

  3. Oracle修改字段类型报错:“ORA-01439:要更改数据类型,则要修改的列必须为空”

    在oracle修改user表字段name类型时遇到报错:“ORA-01439:要更改数据类型,则要修改的列必须为空”,是因为要修改字段的新类型和原来的类型不兼容. 如果要修改的字段数据为空时,则不会报 ...

  4. 关于导入别人的web项目,tomcat无法显示的问题

    这两天头大,老师讲了javaWeb项目,讲完就给我们发了代码,我就想导入直接用,结果它tomcat的add and remove 里一直没有这个项目名字 刚导入还报错,这个可能我的版本太低了,兼容不了 ...

  5. BI之路学习笔记2--SSIS/ETL设计练习三:《DB->定期生成excel表》

    上次笔记记到,用sql任务给参数赋值,映射到变量,然后把数据流任务放到序列容器中进行执行,可以定期生成excel, 现在的问题是: 在EXCEL目标编辑过程中,必须选定某一个特定的excel目标,这样 ...

  6. Jira 使用手册

    Date Revision version Description author 2018-06-14 V1.0.0 Isaac Zhang 2018-06-22 V1.0.1 1,添加git提交操作 ...

  7. nuxt项目打包上线,以及nuxt项目基础代码分享

    nuxt的项目部署到线上环境,有多种方法,这里分享我使用的方法,一步步照着配置,就可以配置成功~ (1)项目先执行npm run build 打包好   (2)服务器安装node 和pm2依赖 服务器 ...

  8. 运用KeyCode在浏览器中按WASD使图形运动

    如何实现在浏览器中按WASD四个键使图形上下左右运动呢? 其实很简单,用keyCode方法就可以实现了. 先放个div在html中: <div id="ball" style ...

  9. Elasticsearch 技术分析(九):Elasticsearch的使用和原理总结

    前言 之前已经分享过Elasticsearch的使用和原理的知识,由于近期在公司内部做了一次内部分享,所以本篇主要是基于之前的博文的一个总结,希望通过这篇文章能让读者大致了解Elasticsearch ...

  10. 个人永久性免费-Excel催化剂功能第42波-任意字符指定长度随机函数

    日常做表过程中,难免会有一些构造数据的场景,构造数据最好是用随机的数据,如随机密码,随机英文字母.数字等.在Excel原生的随机函数Rand中,仅能处理数字的随机,且最终生成的结果也是数字类型.今天E ...