EasyUI表单验证填坑

1、easyui表单的基本验证

1.1 使用class创建验证框 class=“easyui-validatebox”

验证框(validatebox)是为了验证表单输入字段而设计的。如果用户输入无效的值,它将改变背景颜色,显示警告图标和提示消息。

验证框(validatebox)可与表单(form)插件集成,防止提交无效的字段。


(1)验证必填  就是required="required"

<tr>
	<td>验证必填:</td>
	<td><input type="text" required="required" class="easyui-validatebox" /></td>
</tr>

(2)验证邮箱 就是validType="email"

<tr>
	<td>验证邮箱:</td>
	<td><input type="text" validType="email" class="easyui-validatebox" /></td>
</tr>

(3)验证长度 就是validType="length[4,6]"

<tr>
	<td>验证长度:</td>
	<td><input type="text" validType="length[0,12]" class="easyui-validatebox" /></td>
</tr>

1.2使用javascript创建验证框(validatebox)

<input id="test" type="text" />
$('#test').validatebox({  
      required:true,  //验证必填
      validType:'email'  //验证邮箱
});  

2、easyui表单的验证扩展

扩展就是通过 $.fn.validatebox.defaults 重写默认的 defaults。

例如:字符长度验证

$.extend($.fn.validatebox.defaults.rules, {  
    minLength: {  
        validator: function(value, param){  
            return value.length >= param[0];  
        },  
        message: 'Please enter at least {0} characters.'  
    }  
});  

现在就可以使用这个minLength验证类型来定义一个至少输入5个字符的输入框:

<input class="easyui-validatebox" data-options="validType:'minLength[5]'"> 
<input validType = "minLength[5]">

minLength是你定义的验证规则名、value是你的input框的值、param是你民Length[5]中括号的传入参数、message是提示框的内容

常用的表单验证

$.extend($.fn.validatebox.defaults.rules,  
                {  
                    // 移动手机号码验证  
                    mobile : {// value值为文本框中的值  
                        validator : function(value) {  
                            var reg = /^1[3|4|5|8|9]\d{9}$/;  
                            return reg.test(value);  
                        },  
                        message : '输入手机号码格式不准确.'  
                    },  
                    combo : {  
                        validator : function(value) {  
                            if (value) {  
                                return true;  
                            } else {  
                                return false;  
                            }  
                        },  
                        message : '不能为空'  
                    },    
                    // 用户账号验证(只能包括 _ 数字 字母)  
                    username : {  
                        validator : function(value) {  
                            return /^[a-zA-Z][a-zA-Z0-9_]{5,15}$/i.test(value);  
                        },  
                        message : '用户名不合法(字母开头,允许6-16字符,允许字母数字下划线)'  
                    },  
                    // 汉字验证  
                    CHS : {  
                        validator : function(value) {  
                            return /^[\u0391-\uFFE5]+$/.test(value);  
                        },  
                        message : '只能输入汉字'  
                    },  
                    // 验证身份证    
                    idcard : {  
                        validator : function(num) {  
                            num = num.toUpperCase();  
                            //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。  
                            if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {  
                                return false;  
                            }  
                            //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。  
                            //下面分别分析出生日期和校验位  
                            var len, re;  
                            len = num.length;  
                            if (len == 15) {  
                                re = new RegExp(  
                                        /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);  
                                var arrSplit = num.match(re);  
   
                                //检查生日日期是否正确  
                                var dtmBirth = new Date('19' + arrSplit[2]  
                                        + '/' + arrSplit[3] + '/' + arrSplit[4]);  
                                var bGoodDay;  
                                bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2]))  
                                        && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3]))  
                                        && (dtmBirth.getDate() == Number(arrSplit[4]));  
                                if (!bGoodDay) {  
                                    return false;  
                                } else {  
                                    //将15位身份证转成18位  
                                    //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。  
                                    var arrInt = new Array(7, 9, 10, 5, 8, 4,  
                                            2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);  
                                    var arrCh = new Array('1', '0', 'X', '9',  
                                            '8', '7', '6', '5', '4', '3', '2');  
                                    var nTemp = 0, i;  
                                    num = num.substr(0, 6) + '19'  
                                            + num.substr(6, num.length - 6);  
                                    for (i = 0; i < 17; i++) {  
                                        nTemp += num.substr(i, 1) * arrInt[i];  
                                    }  
                                    num += arrCh[nTemp % 11];  
                                    return true;  
                                }  
                            }  
                            if (len == 18) {  
                                re = new RegExp(  
                                        /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);  
                                var arrSplit = num.match(re);  
   
                                //检查生日日期是否正确  
                                var dtmBirth = new Date(arrSplit[2] + "/"  
                                        + arrSplit[3] + "/" + arrSplit[4]);  
                                var bGoodDay;  
                                bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2]))  
                                        && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3]))  
                                        && (dtmBirth.getDate() == Number(arrSplit[4]));  
                                if (!bGoodDay) {  
                                    return false;  
                                } else {  
                                    //检验18位身份证的校验码是否正确。  
                                    //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。  
                                    var valnum;  
                                    var arrInt = new Array(7, 9, 10, 5, 8, 4,  
                                            2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);  
                                    var arrCh = new Array('1', '0', 'X', '9',  
                                            '8', '7', '6', '5', '4', '3', '2');  
                                    var nTemp = 0, i;  
                                    for (i = 0; i < 17; i++) {  
                                        nTemp += num.substr(i, 1) * arrInt[i];  
                                    }  
                                    valnum = arrCh[nTemp % 11];  
                                    if (valnum != num.substr(17, 1)) {  
                                        return false;  
                                    }  
                                    return true;  
                                }  
                            }  
                            return false;  
                        },  
                        message : '身份证号码格式不正确'  
                    },  
                });  

密码一致的验证

$.extend($.fn.validatebox.defaults.rules, {  
    equals: {  
        validator: function(value,param){  
            return value == $(param[0]).val();  
        },  
        message: 'Field do not match.'  
    }  
});  

使用方法:

<input id="pwd" name="pwd" type="password" class="easyui-validatebox" data-options="required:true">  
<input id="rpwd" name="rpwd" type="password" class="easyui-validatebox"  
    required="required" validType="equals['#pwd']">  

3、表单的多重验证

3.1、自从1.3.2版本开始,validatebox本身已经支持多重校验了,例如:

<input class="easyui-validatebox" data-options="required:true,validType:['email','length[0,20]']"> 
$.extend($.fn.validatebox.defaults.rules, {

3.2、原理就是一层一层验证,每层提示不同的message

var aa;//用于接收ajax返回值
$.extend($.fn.validatebox.defaults.rules, {
    accountOnlyOne:{
        //验证用户名格式和唯一性
        validator:function(value){
            var rules = $.fn.validatebox.defaults.rules;
            var reg = /^[a-zA-Z][a-zA-Z0-9_]{4,15}$/;
            //先验证格式是否正确
            if(!reg.test(value)){
                rules.accountOnlyOne.message = "用户名不合法(字母开头,允许5-16字符,允许字母数字下划线)"
                return false
            }
            //通过ajax请求是否存在相同的用户名
            $.ajax({
                async : false,//此处是一个坑   ajax默认异步请求,导致没有返回结果就执行后面的  所以改成false
                type:'get',
                url:"${ctx}/system/user/checkAccount?account="+value,
                success:function(res){
                    aa = res
                }
            })
            if(!aa){
                rules.accountOnlyOne.message = "用户名已经存在"
                return false
            }
            return true
        },
        message:''
    }
    })

通过rules.accountOnlyone.message重写message  注意rules和message之间是你定义的规则名我这里是accountOnlyOne




阅读更多
个人分类: 前端知识小结
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

EasyUI表单验证填坑

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭