jquery.validate 表单验证

Jquery validate

jquery validate插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供大量的定制选项,满足应用程序的各种需求。该插件绑定了一套有用的验证方法,包括url和电子邮件验证,同时提供了一个用来用户编写用户自定义方法的API。

访问 jQuery Validate 官网,下载最新版的 jQuery Validate 插件。

默认的校验规则

序号规则描述
1required:true必须输入的字段
2remote:”check.php”使用ajax方法调用chek.php验证输入值
3email:true必须输入正确格式的电子邮件
4url:true必须输入正确格式的网址
5date:true必须输入正确格式的日期
6dateISO:true必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22。只验证格式,不验证有效性。
7number:true必须输入合法的数字(负数、小数)
8digits:true必须是整数
9creditcard必须输入的信用卡号
10equalTo:”#field”输入值必须和 #field 相同
11accept:输入拥有合法后缀名的字符串
12maxlength:5输入最大的长度是5
13minlength:10输入的最小长度是10
14rangelength:[5,10]输入长度必须介于 5 和 10 之间的字符串(汉字算一个字符)
15range:[5,10]输入值必须介于5和10之间
16max:5输入值不能大于5
17min:10输入值不能小于10

默认提示

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}." )
}

jquery validate提供了中文信息提示包,位于下载包的dist/localization/messages_zh.js,内容如下:

(function( factory ) {
    if ( typeof define === "function" && define.amd ) {
        define( ["jquery", "../jquery.validate"], factory );
    } else {
        factory( jQuery );
    }
}(function( $ ) {

/*
 * Translated default messages for the jQuery validation plugin.
 * Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語)
 */
$.extend($.validator.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} 的数值") });

}));

使用方法

将验证规则写到控件中

...
<script>
    $.validator.setDefaults({
        submitHandler : function(){
            alert('提交事件');
        }
    });
    $().ready(function(){
        $('#commentForm').validate();
    })
</script>
<form class="cmxform" id="commentForm" method="get" action="">
    <fieldset>
        <legend>输入您的名字,邮箱,url,备注</legend>
            <p>
                <label for="cname">Name(必须,最少两个字母)</label>
                <input id="cname" name="name" minlength="2" type="text" required>
            </p>
            <p>
                <label for="cemail">E-Mail (必需)</label>
                <input id="cemail" type="email" name="email" required>
            </p>
            <p>
                 <label for="curl">URL (可选)</label>
                 <input id="curl" type="url" name="url">
            </p>
            <p>
                  <label for="ccomment">备注 (必需)</label>
                  <textarea id="ccomment" name="comment" required></textarea>
            </p>
            <p>
                  <input class="submit" type="submit" value="Submit">
            </p>
    </fieldset>
</form>

将验证规则写到js代码中

$().ready(function(){
    $('signupForm').validate({
        rules:{
            firstname : "required",
            lastname : "required",
            username : {
                required : true,
                minlength : 2
            },
            password : {
                required : true,
                minlength : 5
            },
            confirm_password : {
                required : true,
                minlength : 5,
                equalTo : "#password"
            },
            eamil : {
                required : true,
                email : true
            },
            topic : {
                required : "#newsletter:checked",
                minlength : 2
            },
            agree : "required"
        },
        message : {
            firstname : "请输入你的名字",
            lastname : "请输入你的姓氏",
            username : {
                required : "请输入用户名",
                minglength : "用户名必须由两个字母组成"
            },
            password : {
                required : "请输入密码",
                minglength : "密码长度不能小于5个字母"
            },
            confirm_password : {
                required : "请输入密码",
                minlength: "密码长度不能小于 5 个字母",
                equalTo: "两次密码输入不一致"
             },
             email: "请输入一个正确的邮箱",
             agree: "请接受我们的声明",
             topic: "请选择两个主题"
        }
    });
});
required : true只是必须的
required : "#aa:checked"表达式的值为真,则需要验证。
required : function(){}返回值为真表示需要验证
后两种常用于,表单中需要同时填或者不填的元素

常用方法及注意问题

用其他方式替代默认的submit

$().ready(function(){
    $('#signupForm').validate({
        submitHandler : function(form){
            alert('提交事件');
            form.submit();
        }
    });
})

使用ajax方式

$('.selector').validate({
    submitHandler : function(){
        $(form).ajaxSubmit();
    }
});

可以设置validate的默认值,写法如下:

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

debug,只验证不提交表单

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

$().ready(function(){
    $('#signupForm').validate({
        debug:true
    });
})

如果一个页面有多个表单都想设置为debug,则使用:

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

ignore:忽略某些元素不验证

ignore: ".ignore"

更改错误信息的提示位置

errorPlacrment : Callback

指明错误放置位置,默认情况是:error.appendTo(element.parent());即把错误信息放在验证的元素后面。

errorPlacement : function(error,element){
    error.appendTo(element.parent());
}
$().ready(function(){
    var validator = $("#signupform").validate({
        errorPlacement : function(error,element){
            $(element).closest("form").find("label[for='" + element.attr( "id" ) + "']" ).append( error );
        },
    });
    ...
});

更改错误信息的显示样式

设置错误提示的样式,可以增加图标显示,在该系统中已经建立了一个validation.css,专门用于维护验证文件的样式。

input.error{border:1px solid red}
label.error{
    background:url("../unchecked.gif") no-repeat 0px 0px;
    padding-left: 16px;
    padding-bottom: 2px;
    font-weight: bold;
    color: #EA5200;
}
label.checked {
  background:url("./demo/images/checked.gif") no-repeat 0px 0px;
}

每个字段验证通过执行函数

success:String,Callback

要验证的元素通过验证后的动作,如果跟一个字符串,会当作一个css类,也可以更一个函数。

success : function(label){
    label.html("").addClass("checked");
}

异步验证

remote : URL

使用ajax方式进行验证,默认会提交当前验证值到远程地址,如果需要提交其他的值,可以使用data选项。

remote : {
    url : "check-email.php" //后台处理程序
    type : "post", //数据发送方式
    dataType : "json", //数据接收格式
    data : {
        uername : function(){
            return $("#username").val();
        }
    }
}

远程地址只能输出”true”或”false”,不能有其他输出。

添加自动以校验

addMethod : name,method,message

自定义验证方法

// 中文字两个字节
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] );   
}, $.validator.format("请确保输入的值在{0}-{1}个字节之间(一个中文字算2个字节)"));

// 邮政编码验证   
jQuery.validator.addMethod("isZipCode", function(value, element) {   
    var tel = /^[0-9]{6}$/;
    return this.optional(element) || (tel.test(value));
}, "请正确填写您的邮政编码");

radio和checkbox、select的验证

radio的required表示必须选中一个。

<input type="radion" id="gender_male" value="m" required />
<input type="radion" id="gender_female" value="f"/>

checkbox的required表示必须选中

<input type="checkbox" class="checkbox" id="agree" name="agree" required />

checkbox的minlength表示必须选中的最小个数,maxlength表示最大的选中个数,rangelenght:[2,3]表示选中个数的区间。

<input type="checkbox" class="checkbox" id="spam_email" value="email" name="spam[]" required minlength="2" />
<input type="checkbox" class="checkbox" id="spam_phone" value="phone" name="spam[]" />
<input type="checkbox" class="checkbox" id="spam_mail" value="mail" name="spam[]" />

select 的 required 表示选中的 value 不能为空。

<select id="jungle" name="jungle" title="Please select something!" required>
    <option value=""></option>
    <option value="1">Buga</option>
    <option value="2">Baga</option>
    <option value="3">Oi</option>
</select>

select 的 minlength 表示选中的最小个数(可多选的 select),maxlength 表示最大的选中个数,rangelength:[2,3] 表示选中个数区间。

<select id="fruit" name="fruit" title="Please select at least two fruits" class="{required:true, minlength:2}" multiple="multiple">
    <option value="b">Banana</option>
    <option value="a">Apple</option>
    <option value="p">Peach</option>
    <option value="t">Turtle</option>
</select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值