jquery.validate使用说明及注意事项

jquery.validate.js  官方网站:http://bassistance.de/  http://jqueryvalidation.org/

一、默认验证规则

required:true必须填写
remote:”check.php”使用ajax方法调用check.php验证输入值(check.php返回true或false字符串)
email:true必须输入有效的电子邮件
url:true必须输入有效的网址
date:true必须入有效的日期
dateISO:true必须入有效的日期 (YYYY-MM-DD),例如:2014-06-25,1998/06/09 只验证格式,不验证有效性
number:true必须输入正确的数字(负数,小数)
digits:true只可输入数字
creditcard:true必须输入有效的信用卡号码
equalTo:”#field”必须输入和#field相同的值
extension必须输入有效的后缀
maxlength:10输入长度最多 10 个字符串(汉字算一个字符)
minlength:5输入长度最少 5 个字符串(汉字算一个字符)
rangelength:[5,10]输入长度为必须介于 5 至 10 之间的字符串(汉字算一个字符)
range:[5,10]输入数值必须介于 5 至 10 之间
max:10输入数值不能大于 10
min:5输入数值不能小于 5

二、默认的提示

messages: {
    required: "This field is required.",
    remote: "Please fix this field.",
    email: "Please enter a valid email address.",
    url: "Please enter a valid URL.",
    date: "Please enter a valid date.",
    dateISO: "Please enter a valid date ( ISO ).",
    number: "Please enter a valid number.",
    digits: "Please enter only digits.",
    creditcard: "Please enter a valid credit card number.",
    equalTo: "Please enter the same value again.",
    maxlength: $.validator.format( "Please enter no more than {0} characters." ),
    minlength: $.validator.format( "Please enter at least {0} characters." ),
    rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
    range: $.validator.format( "Please enter a value between {0} and {1}." ),
    max: $.validator.format( "Please enter a value less than or equal to {0}." ),
    min: $.validator.format( "Please enter a value greater than or equal to {0}." )
},

可以使用中文的提示,引入messages_zh.js(在src/localization目录中)

觉得麻烦,一次要引入两个js,可以拿中文的提示覆盖jquery.validate.js中的英文提示(反正我会这么干,毕竟多数情况都中文的),如下:

messages: {
    required: "必须填写",
    remote: "请修正此栏位",
    email: "请输入有效的电子邮件",
    url: "请输入有效的网址",
    date: "请输入有效的日期",
    dateISO: "请输入有效的日期 (YYYY-MM-DD)",
    number: "请输入正确的数字",
    digits: "只可输入数字",
    creditcard: "请输入有效的信用卡号码",
    equalTo: "你的输入不相同",
    extension: "请输入有效的后缀",
    maxlength: $.validator.format("最多 {0} 个字"),
    minlength: $.validator.format("最少 {0} 个字"),
    rangelength: $.validator.format("请输入长度为 {0} 至 {1} 之間的字串"),
    range: $.validator.format("请输入 {0} 至 {1} 之间的数值"),
    max: $.validator.format("请输入不大于 {0} 的数值"),
    min: $.validator.format("请输入不小于 {0} 的数值")
},

三、使用方式(两种)

1.将校验规则写到控件中

看了之前的别人写的文章,貌似是依赖jquery.metadata.js这个库,然后写的时候以 class=”required email” 这样的形式来写,这样写起来好像有些乱,class本身是呈现样式的,现在被附上各种校验的规则,看上去似乎有些乱,不过好在新版本中,又有了新的写法,不依赖上面的js库,以 data-rule-验证规则、data-msg-提示信息 这样的格式来重新定义,更简单,更直观,更强大了。

<script src="../js/jquery.js"></script>
<script src="../js/jquery.validate.js"></script>
<script>
  $().ready(function() {
    $("#registerForm").validate();
  });
</script>
 
<form id="registerForm" method="get" action="">
  <fieldset>
    <p>
      <label for="cusername">用户名</label>
      <input id="cusername" name="username" type="text" data-rule-required="true" data-rule-rangelength="[2,10]" data-msg-required="用户名不能为空" data-msg-rangelength="用户名长度必须是2到10个字符">
    </p>
    <p>
      <label for="cpassword">密码</label>
      <input id="cpassword" name="password" type="password" data-rule-required="true" data-rule-minlength="6" data-msg-required="密码不能为空" data-msg-minlength="至少设置6位密码">
    </p>
    <p>
      <label for="cconfirmpassword">确认密码</label>
      <input id="cconfirmpassword" name="confirmpassword" type="password" data-rule-equalTo="#cpassword" data-msg-equalTo="两次密码不一致">
    </p>
    <p>
      <label for="cemail">邮箱</label>
      <input id="cemail" name="email" data-rule-required="true" data-rule-email="true" data-msg-required="邮箱不能为空" data-msg-email="邮箱的格式不正确">
      </input>
    </p>
    <p>
      <label for="chasreferee">有推荐人请勾选</label>
      <input type="checkbox" id="chasreferee" name="hasreferee">
    </p>
    <p>
      <label for="creferee">推荐人</label>
      <input id="creferee" name="referee" data-rule-required="#chasreferee:checked" data-msg-required="推荐人不能为空">
      </input>
    </p>
    <p>
      <input type="submit" value="提交">
    </p>
  </fieldset>
</form>

2.将校验规则写到代码中

个人感觉第一种写法,更适合做软件开发或是网站后台,而第二种写法更适合做网站的前台,对页面加载速度有苛刻的要求的时候,可以把脚本代码封装成一个单独的js,以提高网页的加载速度。

<script src="../js/jquery.js"></script>
<script src="../js/jquery.validate.js"></script>
<script>
$().ready(function() {
  $("#registerForm").validate({
 
    rules: {
      username: {
        required: true,
        rangelength: [2, 20]
      },
      password: {
        required: true,
        minlength: 6
      },
      confirmpassword: {
        equalTo: "#cpassword"
      },
      email: {
        required: true,
        email: true
      },
      referee: {
        required: "#chasreferee:checked"
      }
 
    },
    messages: {
      username: {
        required: "用户名不能为空",
        rangelength: "用户名长度必须是2到10个字符"
      },
      password: {
        required: "密码不能为空",
        minlength: "至少设置6位密码"
      },
      confirmpassword: {
        equalTo: "两次密码不一致"
      },
      email: {
        required: "邮箱不能为空",
        email: "邮箱的格式不正确"
      },
      referee: {
        required: "推荐人不能为空"
      }
    }
 
  });
});
</script>
 
<form id="registerForm" method="get" action="">
  <fieldset>
    <p>
      <label for="cusername">用户名</label>
      <input id="cusername" name="username" type="text">
    </p>
    <p>
      <label for="cpassword">密码</label>
      <input id="cpassword" name="password" type="password">
    </p>
    <p>
      <label for="cconfirmpassword">确认密码</label>
      <input id="cconfirmpassword" name="confirmpassword" type="password">
    </p>
    <p>
      <label for="cemail">邮箱</label>
      <input id="cemail" name="email">
      </input>
    </p>
    <p>
      <label for="chasreferee">有推荐人请勾选</label>
      <input type="checkbox" id="chasreferee" name="hasreferee">
    </p>
    <p>
      <label for="creferee">推荐人</label>
      <input id="creferee" name="referee">
      </input>
    </p>
    <p>
      <input type="submit" value="提交">
    </p>
  </fieldset>
</form>


四、常用方法及注意事项

1.用其他方式替代默认的SUBMIT(此种方法可以解决编辑内容时,所有内容验证通过表单不提交的问题)

$("#registerForm").validate({
    submitHandler:function(form){
    form.submit();
}
});


也可以设置validate的默认值

$.validator.setDefaults({
    submitHandler: function (form) {
    form.submit();
}
});


2.debug,如果这个参数为true,那么表单不会提交,只进行检查,调试时十分方便

$("#registerForm").validate({
    debug:true
});


或者

$.validator.setDefaults({
    debug: true
})


3.ignore:忽略某些元素不验证(默认情况是忽略:hidden及隐藏的元素不进行验证)

$.validator.setDefaults({
    ignore: ".ignore"
})

4.errorPlacement:指定错误信息存放的位置

有一组复选框或单选框的情况,将错误信息的位置,存放在一组元素最后,如下:

$("#registerForm").validate({
    errorPlacement: function (error, element) { //指定错误信息位置
        if (element.is(':radio') || element.is(':checkbox')) { //如果是radio或checkbox
            var eid = element.attr('name'); //获取元素的name属性
            error.appendTo(element.parent()); //将错误信息添加当前元素的父结点后面
        } else {
            error.insertAfter(element);
        }
    }
});

5.父元素增加错误样式

var settings = {
  errorPlacement: function (error, element) {
    var $parent = $(element).parent();
    $parent.addClass('has-error');
},
success: function (label, element) {
    var $parent = $(element).parent();
    $parent.removeClass('has-error');
  }
};

// override jQuery unobtrusive validator settings
$.validator.unobtrusive.options = settings;

6.新增其他验证规则

$.validator.addMethod("ckrequired", function (value, element, param) {
  var min = param[0];
  var max = param[1];
  if (value >= min && (max <= 0 || value <= max))
    return true;
  return false;
});

原文:jquery.validate使用说明及注意事项

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值