`
mefly
  • 浏览: 150590 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

jQuery.validate 学习

阅读更多
最近在做一个用户注册登录的页面,资料查寻过程中发现了一个非常不错的客户端验证的极品-jQuery.validate。
它是著名的JavaScript包jQuery的一个插件,其实它还有其它的一些插件应该都爽,有待慢慢来学习

官方地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation/
jQuery用户手册:http://jquery.org.cn/visual/cn/index.xml

开发使用起来非常简单明了,
我的代码:
Java代码
$(document).ready(function(){   
 
/* 设置默认属性 */   
$.validator.setDefaults({   
  submitHandler: function(form) { form.submit(); }   
});   
// 中文字两个字节   
jQuery.validator.addMethod("byteRangeLength", function(value, element, param) {   
  var length = value.length;   
  for(var i = 0; i < value.length; i++){   
   if(value.charCodeAt(i) > 127){   
    length++;   
   }   
  }   
  return this.optional(element) || ( length >= param[0] && length <= param[1] );   
}, "请确保输入的值在3-15个字节之间(一个中文字算2个字节)");   
 
/* 追加自定义验证方法 */   
// 身份证号码验证   
jQuery.validator.addMethod("isIdCardNo", function(value, element) {   
  return this.optional(element) || isIdCardNo(value);   
}, "请正确输入您的身份证号码");   
 
// 字符验证   
jQuery.validator.addMethod("userName", function(value, element) {   
  return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);   
}, "用户名只能包括中文字、英文字母、数字和下划线");   
 
// 手机号码验证   
jQuery.validator.addMethod("isMobile", function(value, element) {   
  var length = value.length;   
  return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/.test(value));   
}, "请正确填写您的手机号码");   
 
// 电话号码验证   
jQuery.validator.addMethod("isPhone", function(value, element) {   
  var tel = /^(\d{3,4}-?)?\d{7,9}$/g;   
  return this.optional(element) || (tel.test(value));   
}, "请正确填写您的电话号码");   
 
// 邮政编码验证   
jQuery.validator.addMethod("isZipCode", function(value, element) {   
  var tel = /^[0-9]{6}$/;   
  return this.optional(element) || (tel.test(value));   
}, "请正确填写您的邮政编码");   
$(regFrom).validate({   
/* 设置验证规则 */   
  rules: {   
   userName: {   
    required: true,   
    userName: true,   
    byteRangeLength: [3,15]   
   },   
   password: {   
    required: true,   
    minLength: 5   
   },   
   repassword: {   
    required: true,   
    minLength: 5,   
    equalTo: "#password"   
   },   
   question: {   
    required: true   
   },   
   answer: {   
    required: true   
   },   
   realName: {   
    required: true   
   },   
   cardNumber: {   
    isIdCardNo: true   
   },   
   mobilePhone: {   
    isMobile: true   
   },   
   phone: {   
    isPhone: true   
   },   
   email: {   
    required: true,   
    email: true   
   },   
   zipCode: {   
    isZipCode:true   
   }   
  },   
/* 设置错误信息 */   
  messages: {   
   userName: {   
    required: "请填写用户名",   
    byteRangeLength: "用户名必须在3-15个字符之间(一个中文字算2个字符)"   
   },   
   password: {   
    required: "请填写密码",   
    minlength: jQuery.format("输入{0}.")   
   },   
   repassword: {   
    required: "请填写确认密码",   
    equalTo: "两次密码输入不相同"   
   },   
   question: {   
    required: "请填写您的密码提示问题"   
   },   
   answer: {   
    required: "请填写您的密码提示答案"   
   },   
   realName: {   
    required: "请填写您的真实姓名"   
   },   
   email: {   
    required: "请输入一个Email地址",   
    email: "请输入一个有效的Email地址"   
   }   
  },   
/* 错误信息的显示位置 */   
  errorPlacement: function(error, element) {   
   error.appendTo( element.parent() );   
  },   
/* 验证通过时的处理 */   
  success: function(label) {   
   // set   as text for IE   
   label.html(" ").addClass("checked");   
  },   
/* 获得焦点时不验证 */   
  focusInvalid: false,   
  onkeyup: false   
});   
 
// 输入框获得焦点时,样式设置   
$('input').focus(function(){   
  if($(this).is(":text") || $(this).is(":password"))   
   $(this).addClass('focus');   
  if ($(this).hasClass('have_tooltip')) {   
   $(this).parent().parent().removeClass('field_normal').addClass('field_focus');   
  }   
});   
 
// 输入框失去焦点时,样式设置   
$('input').blur(function() {   
  $(this).removeClass('focus');   
  if ($(this).hasClass('have_tooltip')) {   
   $(this).parent().parent().removeClass('field_focus').addClass('field_normal');   
  }   
});   
});  

$(document).ready(function(){

/* 设置默认属性 */
$.validator.setDefaults({
  submitHandler: function(form) { form.submit(); }
});
// 中文字两个字节
jQuery.validator.addMethod("byteRangeLength", function(value, element, param) {
  var length = value.length;
  for(var i = 0; i < value.length; i++){
   if(value.charCodeAt(i) > 127){
    length++;
   }
  }
  return this.optional(element) || ( length >= param[0] && length <= param[1] );
}, "请确保输入的值在3-15个字节之间(一个中文字算2个字节)");

/* 追加自定义验证方法 */
// 身份证号码验证
jQuery.validator.addMethod("isIdCardNo", function(value, element) {
  return this.optional(element) || isIdCardNo(value);
}, "请正确输入您的身份证号码");

// 字符验证
jQuery.validator.addMethod("userName", function(value, element) {
  return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);
}, "用户名只能包括中文字、英文字母、数字和下划线");

// 手机号码验证
jQuery.validator.addMethod("isMobile", function(value, element) {
  var length = value.length;
  return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/.test(value));
}, "请正确填写您的手机号码");

// 电话号码验证
jQuery.validator.addMethod("isPhone", function(value, element) {
  var tel = /^(\d{3,4}-?)?\d{7,9}$/g;
  return this.optional(element) || (tel.test(value));
}, "请正确填写您的电话号码");

// 邮政编码验证
jQuery.validator.addMethod("isZipCode", function(value, element) {
  var tel = /^[0-9]{6}$/;
  return this.optional(element) || (tel.test(value));
}, "请正确填写您的邮政编码");
$(regFrom).validate({
/* 设置验证规则 */
  rules: {
   userName: {
    required: true,
    userName: true,
    byteRangeLength: [3,15]
   },
   password: {
    required: true,
    minLength: 5
   },
   repassword: {
    required: true,
    minLength: 5,
    equalTo: "#password"
   },
   question: {
    required: true
   },
   answer: {
    required: true
   },
   realName: {
    required: true
   },
   cardNumber: {
    isIdCardNo: true
   },
   mobilePhone: {
    isMobile: true
   },
   phone: {
    isPhone: true
   },
   email: {
    required: true,
    email: true
   },
   zipCode: {
    isZipCode:true
   }
  },
/* 设置错误信息 */
  messages: {
   userName: {
    required: "请填写用户名",
    byteRangeLength: "用户名必须在3-15个字符之间(一个中文字算2个字符)"
   },
   password: {
    required: "请填写密码",
    minlength: jQuery.format("输入{0}.")
   },
   repassword: {
    required: "请填写确认密码",
    equalTo: "两次密码输入不相同"
   },
   question: {
    required: "请填写您的密码提示问题"
   },
   answer: {
    required: "请填写您的密码提示答案"
   },
   realName: {
    required: "请填写您的真实姓名"
   },
   email: {
    required: "请输入一个Email地址",
    email: "请输入一个有效的Email地址"
   }
  },
/* 错误信息的显示位置 */
  errorPlacement: function(error, element) {
   error.appendTo( element.parent() );
  },
/* 验证通过时的处理 */
  success: function(label) {
   // set   as text for IE
   label.html(" ").addClass("checked");
  },
/* 获得焦点时不验证 */
  focusInvalid: false,
  onkeyup: false
});

// 输入框获得焦点时,样式设置
$('input').focus(function(){
  if($(this).is(":text") || $(this).is(":password"))
   $(this).addClass('focus');
  if ($(this).hasClass('have_tooltip')) {
   $(this).parent().parent().removeClass('field_normal').addClass('field_focus');
  }
});

// 输入框失去焦点时,样式设置
$('input').blur(function() {
  $(this).removeClass('focus');
  if ($(this).hasClass('have_tooltip')) {
   $(this).parent().parent().removeClass('field_focus').addClass('field_normal');
  }
});
});

网上的资料有人说,它跟prototype包会有冲突,我还没有同时使用过,这点不是很清楚,但我是发现一个问题:
对于最小/大长度的验证方法,作者可能考虑到大家的命名习惯不同,同时做了minLength和minlength(maxLength和maxlength)方法,应该哪一个都是可以的,但对于用户Message来说,只能够定义针对minlength(maxlength),才能调用用户自定义的Message,
否则只是调用包的默认Message,但具体原因还没有查清楚。同时,这个插件提供了本地化的消息,但对于我这里初学者来说,怎么使用它还有待摸索!
分享到:
评论

相关推荐

    jquery.validate学习实例

    在"jquery.validate学习实例"中,我们可以通过提供的`index.html`和`js`文件来了解如何使用`jQuery Validate`插件。 ### jQuery Validate 插件介绍 `jQuery Validate`是由Jörn Zaefferer开发的一个jQuery插件,它...

    jquery.validate.js 和 帮助文档.rar

    《jQuery validate.js与帮助文档详解》 在Web开发领域,jQuery是一个广泛使用的JavaScript库,它极大地简化了DOM操作,事件处理以及Ajax交互。而jQuery Validate插件是jQuery的一个强大附件,专为表单验证设计,...

    jquery.validate.js 1.8.1 + 实例

    通过学习和分析这些示例,开发者可以更好地理解和应用 `jQuery Validate` 插件。 ### 结论 `jQuery Validate` 1.8.1 版本为前端开发人员提供了一套强大且灵活的工具,用于验证用户输入的数据。这个库易于使用,可...

    jquery.validate.js jquery表单验证

    `jQuery Validate` 是一个流行的 JavaScript 库,用于在前端实现高效、灵活的表单验证。这个库是 jQuery 生态系统的一部分,它简化了对 HTML 表单数据的验证过程,提高了用户体验,确保用户输入的数据在提交到服务器...

    jQuery的validate插件使用整理

    **jQuery的validate插件使用详解** jQuery的validate插件是一款强大的表单验证工具,它...`jQuery的validate插件使用整理.doc`和`jquery_validate`文件可能包含了更具体的示例和详细教程,建议结合学习,以加深理解。

    jquery.validate_Validation

    《jQuery Validate验证插件详解》 jQuery Validate是一个强大的表单验证插件,它为开发者提供了简单易用的API,用于确保用户在提交表单时输入的数据满足特定的格式和要求。该插件大大简化了前端数据验证的过程,...

    jquery_validate插件总结

    这是一个关于jquery_validate插件学习的总结,内容不多,但是都是干货,有兴趣的可以看一下。

    jquery validate依赖包及其帮助文档.rar

    《jQuery Validate插件详解与应用指南》 在Web开发领域,表单验证是不可或缺的一环,它能够确保用户输入的数据符合预设的规则,从而提高数据的准确性和系统的稳定性。jQuery Validate是一个强大的JavaScript库,专...

    基于jquery的表单验证,超越jquery.validate插件

    本教程将深入探讨一个基于jQuery的表单验证解决方案,它在性能、易用性、功能和人性化方面超越了官方的`jquery.validate`插件。 首先,我们要了解`jquery.validate`插件。它是jQuery生态系统中最广泛使用的表单验证...

    jquery-validate

    8. **demo**:演示示例,通常用于展示如何配置和使用`jQuery Validate`插件,开发者可以通过查看和运行这些例子来学习如何应用验证规则。 使用`jQuery Validate`时,你需要在HTML中指定验证规则,这通常通过添加...

    jquery validate例子

    《jQuery Validate插件详解与实例应用》 ...通过学习和掌握jQuery Validate,我们可以为用户提供更加友好、安全的表单交互体验。在实际项目中,可以根据需求调整和扩展验证规则,以满足各种复杂场景。

    IE8兼容Jquery.validate.js的问题

    在JavaScript的世界里,jQuery库和它的插件jQuery.validate.js是前端开发者进行表单验证的得力工具。然而,由于浏览器的差异性,尤其是在处理某些特定功能时,可能会遇到兼容性问题,尤其是对于像IE8这样的老版本...

    jquery.validate.min.js

    是一个AJAX中的动态插件 你可以免费下载希望你们大家学习顺利,早日成就心中所想

    jquery.validate.js

    jquery表单验证组件,2020-05-23更新。 jquery表单验证组件,2020-05-23更新,供大家学习使用。

    jQuery.metadata.js

    《jQuery.metadata.js:深入解析jQuery插件的元数据...在学习和使用jQuery.metadata.js的过程中,我们需要理解其基本原理,掌握正确的元数据标记方式,并结合实际需求灵活运用,才能充分发挥它的潜力,提升开发效率。

    Jquery插件,JqueryUI,JqueryForm,JqueryValidate,Jqueryvsdoc

    总的来说,这个压缩包提供了 jQuery 生态系统中四个关键组成部分,无论是对于初学者还是经验丰富的开发者,都是极具价值的学习和开发资源。通过深入理解并熟练运用这些插件,你可以创建出更加高效、优雅的 Web 应用...

    jquery-validate验证框架使用详解及JS文件

    《jQuery Validate验证框架详解与JS应用》 在Web开发中,表单验证是不可或缺的一环,它确保...同时,提供的`validate.js`和`jquery.validate.zip`文件包含了完整的jQuery Validate插件,供开发者直接使用或参考学习。

    jquery validate 自动绑定校验规则

    `jQuery Validate` 是一个流行的JavaScript库,用于在前端进行表单验证。这个库极大地简化了网页表单数据的验证过程,使得开发者可以方便地定义验证规则,并为用户提供实时的反馈。下面将详细介绍`jQuery Validate`...

    快速学习jQuery插件 jquery.validate.js表单验证插件使用方法

    最常使用JavaScript的场合就是表单的验证,而jQuery作为一个优秀的JavaScript库,也提供了一个优秀的表单验证插件—-Validation。Validation是历史最悠久的jQuery插件之一,经过了全球范围内不同项目的验证,并得到...

    jquery表单验证实例,对数字,字数,必填项等校验

    在网页开发中,表单验证是一项至关重要的任务,它确保用户输入的数据符合预期...通过研究和理解这些文件,你可以更深入地学习`jQuery Validate`插件的使用方法,并将其应用于自己的项目中,实现高效且友好的表单验证。

Global site tag (gtag.js) - Google Analytics