`
Javatar2199
  • 浏览: 4414 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

一个比较完善表单校验插件(续)----自以为算是比较全面的校验规则

阅读更多
$.fn.jStar={};

$.fn.jStar.validations = [];
$.fn.jStar.validation = function(name, func) {
    $.fn.jStar.validations.push(name);
    $.fn.jStar.validations[name] = func;
};


$.fn.jStar.validation('required', function(element, value) {
    if(element.attr('type') == 'checkbox') {
        if(element.attr('checked') == true) return true;
        else return false;
    } else {
        if(value.length == 0) return false;
        else return true;
    }
});




$.fn.jStar.validation('minlength', function(element, value, minlength) {
    if(value.length < minlength) return false;
    else return true;
});


$.fn.jStar.validation('maxlength', function(element, value, maxlength) {
    if(value.length > maxlength) return false;
    else return true;
});


$.fn.jStar.validation('rangelength', function(element, value, minlength, maxlength) {
    if(value.length >= minlength && value.length <= maxlength) return true;
    else return false;
});




$.fn.jStar.validation('min', function(element, value, min) {
    if(parseInt(value) < min) return false;
    else return true;
});


$.fn.jStar.validation('max', function(element, value, max) {
    if(parseInt(value) > max) return false;
    else return true;
});


$.fn.jStar.validation('range', function(element, value, min, max) {
    if(parseInt(value) >= min && parseInt(value) <= max) return true;
    else return false;
});




$.fn.jStar.validation('number', function(element, value) {
    if(/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value)) return true;
    else return false;
});


$.fn.jStar.validation('digits', function(element, value) {
    if(/^\d+$/.test(value)) return true;
    else return false;
});
$.fn.jStar.validation('phone', function(element, value) {
    if( /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/.test(value)) return true;
    else return false;
});
$.fn.jStar.validation('mobile', function(element, value) {
    if(/^0?(13[0-9]|15[0-35-9]|18[0236789]|14[57])[0-9]{8}$/g.test(value)) return true;
    else return false;
});
$.fn.jStar.validation('chinese', function(element, value) {
    if(/^[\u0391-\uFFE5]+$/.test(value)) return true;
    else return false;
});
$.fn.jStar.validation('english', function(element, value) {
    if(/^[A-Za-z]+$/.test(value)) return true;
    else return false;
});
$.fn.jStar.validation('zip', function(element, value) {
    if(/^[1-9]\d{5}$/.test(value)) return true;
    else return false;
});
$.fn.jStar.validation('idCard', function(element, value) {
    return isIdCard(value);
});




$.fn.jStar.validation('email', function(element, value) {
    if(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value)) return true;
    else return false;
});




$.fn.jStar.validation('url', function(element, value) {
    if(/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value)) return true;
    else return false;
});




$.fn.jStar.validation('username', function(element, value) {
    if(/^([a-zA-Z])[a-zA-Z_-]*[\w_-]*[\S]$|^([a-zA-Z])[0-9_-]*[\S]$|^[a-zA-Z]*[\S]$/.test(value)) return true;
    else return false;
});




$.fn.jStar.validation('match', function(element, value, match) {
    if($(match).val() != value) return false;
    else return true;
});




$.fn.jStar.validation('date', function(element, value) {
    if(!/Invalid|NaN/.test(new Date(value))) return true;
    else return false;
})
$.fn.jStar.validation('contains', function(element,value, word) {
    return value.indexOf(word) != -1;
})




//function watchSelect(type) {
//    $('input['+$.fn.jStar.defaults.validationAttribute+'*="'+type+'"]').each(function() {
//        var el = $(this);
//
//        $('input[name="'+el.attr('name')+'"]').each(function() {
//            var al = $(this);
//            if(al.attr($.fn.jStar.defaults.validationAttribute).indexOf(type) == -1) al.blur(function() { el.blur(); });
//        });
//    });
//}
//
//$(document).ready(function() {
//    watchSelect('minselect');
//    watchSelect('maxselect');
//    watchSelect('rangeselect');
//});


$.fn.jStar.validation('minselect', function(element, value, min) {
    if($('input[name="'+element.attr('name')+'"]:checked').length >= min) return true;
    else return false;
});


$.fn.jStar.validation('maxselect', function(element, value, max) {
    if($('input[name="'+element.attr('name')+'"]:checked').length <= max) return true;
    else return false;
});


$.fn.jStar.validation('rangeselect', function(element, value, min, max) {
    var checked = $('input[name="'+element.attr('name')+'"]:checked');


    if(checked.length >= min && checked.length <= max) return true;
    else return false;
});


function isIdCard(number){
    var date, Ai;
    number=number.replace("X","x");
    var verify = "10x98765432";
    var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    var area = ['','','','','','','','','','','','北京','天津','河北','山西','内蒙古','','','','','','辽宁','吉林','黑龙江','','','','','','','','上海','江苏','浙江','安微','福建','江西','山东','','','','河南','湖北','湖南','广东','广西','海南','','','','重庆','四川','贵州','云南','西藏','','','','','','','陕西','甘肃','青海','宁夏','新疆','','','','','','台湾','','','','','','','','','','香港','澳门','','','','','','','','','国外'];
    var re = number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[x\d])))$/i);
    if(re == null) return false;
    if(re[1] >= area.length || area[re[1]] == "") return false;
    if(re[2].length == 12){
        Ai = number.substr(0, 17);
        date = [re[9], re[10], re[11]].join("-");
    }
    else{
        Ai = number.substr(0, 6) + "19" + number.substr(6);
        date = ["19" + re[4], re[5], re[6]].join("-");
    }
    if(!this.isDate(date, "ymd")) return false;
    var sum = 0;
    for(var i = 0;i<=16;i++){
        sum += Ai.charAt(i) * Wi[i];
    }
    Ai +=  verify.charAt(sum%11);
    return (number.length ==15 || number.length == 18 && number == Ai);
}
function isDate(op, formatString){
    formatString = formatString || "ymd";
    var m, year, month, day;
    switch(formatString){
        case "ymd" :
            m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));
            if(m == null ) return false;
            day = m[6];
            month = m[5]*1;
            year =  (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));
            break;
        case "dmy" :
            m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));
            if(m == null ) return false;
            day = m[1];
            month = m[3]*1;
            year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));
            break;
        default :
            break;
    }
    if(!parseInt(month)) return false;
    month = month==0 ?12:month;
    var date = new Date(year, month-1, day);
    return (typeof(date) == "object" && year == date.getFullYear() && month == (date.getMonth()+1) && day == date.getDate());
    function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}
}
分享到:
评论

相关推荐

    jQuery的表单校验插件validate

    jQuery的表单校验插件`validate`是前端开发中常用的一个工具,它极大地简化了对HTML表单数据的验证过程。这个插件基于流行的JavaScript库jQuery构建,为开发者提供了丰富的选项和方法来定制表单验证规则,确保用户...

    jquery加强和表单校验插件的使用

    jquery的基础使用和表单校验插件的使用。

    jquery的validate表单校验插件

    《jQuery的validate表单校验插件深度解析》 在前端开发中,表单校验是必不可少的一个环节,它能够确保用户输入的数据符合预设的规范,提高用户体验并减轻服务器端的压力。jQuery的validate插件作为一款强大的表单...

    WEB前端校验插件,提供表单字段的配置式校验功能

    本文将深入探讨一个基于JavaScript的WEB前端校验插件,该插件提供了表单字段的配置式校验功能。 首先,我们要理解JavaScript在前端验证中的作用。JavaScript是一种解释型的、轻量级的脚本语言,广泛应用于网页和...

    jQuery的form表单校验插件

    **jQuery的form表单校验插件** 在Web开发中,表单验证是必不可少的一环,它确保用户输入的数据符合预设的规则,避免无效数据的提交,提高用户体验。jQuery作为一个强大的JavaScript库,提供了丰富的功能,包括对DOM...

    一款简单轻量的Vuejs表单校验插件

    "Vuerify"就是这样一款专为Vue.js设计的简单轻量的表单校验插件。 Vuerify的核心功能在于提供数据校验服务,它内置了一系列基础的校验规则,如非空检查、长度限制、邮箱格式验证等,同时允许用户根据实际需求自定义...

    jQuery表单校验插件validate实例代码集

    jQuery表单校验插件validate实例代码集 有多个表同的表单,来共同展现表单验证插件的各种用法,包括判断字符、输入为空、类型判断、适时Ajax方式提示等,通过这些实例可快速掌握验证的方法和要点,此前,源码爱好者...

    jq 表单校验工具

    "jq 表单校验工具"是一个专门用于JavaScript(js)和jQuery(jq)环境的插件,它提供了强大的功能来帮助开发者实现对表单输入的实时验证。 首先,我们来看一下这个工具的核心功能。"传参"意味着你可以向校验方法...

    jQuery Validate 表单校验插件.zip

    jQuery Validate 插件依赖 jQuery 库,使用前需要先导入 jQuery的 js 文件,再导入 jquery.validate.js 插件,可以再导入中文提示信息文件 messages_zh.js

    jquery 表单校验的插件formValidator4.01

    在4.0.1版本中,该插件提供了一系列丰富的特性,使得开发者能够快速构建出功能完善、易于维护的表单验证机制。 **一、jQuery FormValidator核心特性** 1. **易用性**:jQuery FormValidator的API设计简洁明了,...

    jQuery formValidator表单校验插件ver2.9.1

    jQuery formValidator表单校验插件 插件目前提示错误,有两种模式:showword和showalert,即文字提示和窗口提示 目前支持5种大的校验方式,分别是:InputValidator(针对input、textarea、select控件的字符...

    表单验证插件国产插件

    对一个表单对象,你只需要写一行代码就可以轻松实现无数种(理论上)脚本控制。目前支持5种大的校验方式,分别是:inputValidator(针对input、textarea、select控件的字符长度、值范围、选择个数的控制)、...

    vue 校验多个input框右侧提示

    VueValidate是一个专门为Vue设计的表单验证插件,它允许开发者轻松地实现对多个input框的同步校验,并在输入框右侧实时显示提示信息。 在Vue中,我们通常会为每个input绑定一个v-model指令,用来同步用户的输入数据...

    jQuery表单校验插件validator使用方法详解

    2.表单校验插件validator的基本语法 在rules中通过校验规则名称使用校验规则 ,在messages中定义该规则对应的错误提示信息。 &lt;!-- 需要引入的文件 --&gt; [removed][removed] [removed][removed] &lt;

    jQuery表单验证插件

    jQuery,一个轻量级、高性能的JavaScript库,提供了丰富的API来简化DOM操作,同时也有一系列优秀的插件用于增强表单验证功能。本篇文章将深入探讨jQuery表单验证插件的使用、功能以及常见的应用场景。 ### 一、...

    自带气泡提示的vue校验插件(vue-verify-pop)

    Vue.js 是一款流行的前端框架,而 `vue-verify-pop` 是一个专为 Vue 设计的校验插件,它提供了一种自带气泡提示的验证方式,能够方便地集成到 Vue 项目中,帮助开发者实现表单数据的有效验证。本文将详细介绍如何...

    基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解

    用起来没有多大的问题,但是在实际工作中,表单校验有可能有比较复杂的个性化的需求,使得我们用这些插件的默认机制并不能完成这些功能,所以要根据自己的需要去改造它们(毕竟自己还不到那个写一个完美的校验框架的...

    from 表单验证 js框架类库

    对一个表单对象,你只需要写一行代码就可以轻松实现无数种(理论上)脚本控制。目前支持5种大的校验方式,分别是:inputValidator(针对input、textarea、select控件的字符长度、值范围、选择个数的控制)、...

    基于Vue表单通用验证插件

    Vue.js 是一个流行的轻量级前端JavaScript框架,用于构建用户界面。在开发Web应用程序时,表单验证是不可或缺的一部分,确保用户输入的数据符合预设的规则。基于Vue的表单通用验证插件是为了简化这一过程而设计的。...

Global site tag (gtag.js) - Google Analytics