日期:2014-05-16  浏览次数:20392 次

js表单验证框架
Validator = {
    Require : /.+/, //<select name="Operation" dataType="Require" msg="未选择"><option value="">……
    Email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,//信箱格式
    Phone : /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/,//电话
    Mobile : /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/,//手机
    Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
    IdCard : "this.IsIdCard(value)",//身份证号
    Currency : /^\d+(\.\d+)?$/,
    Number : /^\d+$/,
    Zip : /^[1-9]\d{5}$/,//邮编<input name="Zip" dataType="Custom" regexp="^[1-9]\d{5}$" msg="邮政编码不存在">
    QQ : /^[1-9]\d{4,8}$/,//QQ
    Integer : /^[-\+]?\d+$/,
    Double : /^[-\+]?\d+(\.\d+)?$/,
    English : /^[A-Za-z]+$/,//只允许英文字母
    Chinese :  /^[\u0391-\uFFE5]+$/,//只允许中文
    Username : /^[a-z]\w{3,}$/i,//变量命名规则
    UnSafe : /^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,
    IsSafe : function(str){return !this.UnSafe.test(str);},
    SafeString : "this.IsSafe(value)",//密码
    Filter : "this.DoFilter(value, getAttribute('accept'))",//<input name="up" dataType="Filter" msg="非法的文件格式" type="file" accept="jpg, gif, png">
    Limit : "this.limit(value.length,getAttribute('min'),  getAttribute('max'))",//<textarea name="Description" dataType="Limit" max="10" msg="必须在10个字之内">中文是一个字</textarea>
    LimitB : "this.limit(this.LenB(value), getAttribute('min'), getAttribute('max'))",//<textarea name="History" dataType="LimitB" min="3" max="10" msg="必须在[3,10]个字节之内">中文是两个字节t</textarea>
    Date : "this.IsDate(value, getAttribute('min'), getAttribute('format'))",//<input name="Birthday" dataType="Date" format="ymd" msg="生日日期不存在">
    Repeat : "value == document.getElementsByName(getAttribute('to'))[0].value",//验证2次输入是否一至<input name="Repeat" dataType="Repeat" to="Password" msg="两次输入的密码不一致" type="password">
    Range : "getAttribute('min') < (value|0) && (value|0) < getAttribute('max')",//<input name="Year" dataType="Range" msg="年龄必须在18~28之间" min="18" max="28">
    Compare : "this.compare(value,getAttribute('operator'),getAttribute('to'))",//<input name="Year1" require="false" dataType="Compare" msg="年龄必须在18以上" to="18" operator="GreaterThanEqual">
    Custom : "this.Exec(value, getAttribute('regexp'))",
    Group : "this.MustChecked(getAttribute('name'), getAttribute('min'), getAttribute('max'))",//<input name="Province" value="4" type="radio" dataType="Group" msg="必须选定一个">单选框  <input name="Favorite" value="4" type="checkbox" " dataType="Group" min="2" max="3" msg="必须选择2~3种">复选框
    ErrorItem : [document.forms[0]],
    ErrorMessage : ["error:"],
    Validate : function(theForm, mode){
        var obj = document.forms[0] || event.srcElement;
        var count = obj.elements.length;
        this.ErrorMessage.length = 1;
        this.ErrorItem.length = 1;
        this.ErrorItem[0] = obj;
        for(var i=0;i<count;i++){
            with(obj.elements[i]){
 &n