jquery.validate.extend.js 3.83 KB
//定义Jquery全局函数(验证需要使用)
jQuery.getByteStrLength = function(str) {
    var cArr = str.match(/[^\x00-\xff]/ig);
    return str.length + (cArr === null ? 0 : cArr.length);
};

//定义中文消息
var cnmsg = {
    required: "必需填写项",
    remote: "请修正该字段",
    email: "请输入正确格式的电子邮件",
    url: "网址不合法",
    date: "日期不合法",
    dateISO: "请输入合法的日期 (ISO).",
    number: "只能为数字",
    digits: "只能输入整数",
    creditcard: "请输入合法的信用卡号",
    equalTo: "请再次输入相同的值",
    accept: "请输入拥有合法后缀名的字符串",
    maxlength: jQuery.validator.format("请输入一个长度最多是 {0} 的字符串"),
    minlength: jQuery.validator.format("请输入一个长度最少是 {0} 的字符串"),
    rangelength: jQuery.validator.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"),
    range: jQuery.validator.format("有效值介于 {0} 到 {1}"),
    max: jQuery.validator.format("请输入一个最大为 {0} 的值"),
    min: jQuery.validator.format("请输入一个最小为 {0} 的值"),

    //自定义验证方法的提示信息
    stringCheck: "用户名只能包括中文字、英文字母、数字和下划线",
    byteRangeLength: "用户名必须在4-15个字符之间(一个中文字算2个字符)",
    isIdCardNo: "请正确输入您的身份证号码"
};

jQuery.extend(jQuery.validator.messages, cnmsg);
//添加Ip规则
jQuery.validator.addMethod("ip", function(value, element) {
    var ipRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$/;
    return this.optional(element) || ipRegex.test(value);
}, "Ip地址不正确,前后不能有空格");

//添加mac地址规则
jQuery.validator.addMethod("mac", function(value, element) {
    var ipRegex = /^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/;
    if ("00:00:00:00:00:00" === $.trim(value).toUpperCase() || "FF:FF:FF:FF:FF:FF" === $.trim(value).toUpperCase()) {
        return false;
    }
    if (parseInt(value.substring(1, 2), 16) % 2 !== 0) { //如果第二位数字不为偶数,则返回错误
        return false;
    }
    return this.optional(element) || ipRegex.test(value);
}, "mac地址格式应为 xx:xx:xx:xx:xx:xx,其中xx范围00-FF,但不能全为0或全为F,且第二位数字必须是偶数");

//添加数字框中-0格式验证
jQuery.validator.addMethod("validMinusZero", function(value, element) {
    var reg = /^-+0+$/;
    return !reg.test(value);
}, "不能输入类似-0的值");

//ge 大于或者等于指定ID的控件的值,必须是数字
jQuery.validator.addMethod("ge", function(value, element, param) {
    var targetElement = $(param[0]);
    return this.optional(element) || (targetElement.length > 0 && parseInt(value) >= parseInt(targetElement.val()));
}, jQuery.validator.format("值必须大于 '{1}' "));

jQuery.validator.addMethod("maxByteLength", function(value, element, maxLength) {
    var characterLength = jQuery.getByteStrLength(value);
    return this.optional(element) || characterLength <= maxLength;
}, "最多输入{0}个字符!(一个中文算2个字符)");

jQuery.validator.addMethod("username", function(value, element) {
    var ipRegex = /^[a-zA-Z][a-zA-Z0-9_]{2,15}$/i;
    return this.optional(element) || ipRegex.test(value);
}, "用户名不合法(字母开头,允许字母数字下划线,3-16个字符)");

// 添加一个正则表达式验证规则
jQuery.validator.addMethod("regex",
    function(value, element, param) {
        if (param instanceof RegExp) {
            return this.optional(element) || param.test(element.value);
        }
        console.warn("jquery validate 验证方法:'regex',参数: %s 不是合法正则表达式!", param);
        return false;
    },
    jQuery.validator.format("格式不合法!"));