Welcome 微信登录

首页 / 脚本样式 / JavaScript / FormValid0.5版本发布,带ajax自定义验证例子

最新更新修改了当input元件name有包含[],把焦点移到元件上时会出现JS错误,只有IE是这种情况,没找到很好的解决办法,我只是把这种情况给排除了,就是当元件name有包含[]不把焦点移上去,哪果有好的解决办法请联系我。
并作了 demo8 - 结合jquery实现ajax自定义验证
下载:formvalid.zip 复制代码 代码如下:
/*
 * Copyright (c) 2006-2008 coderhome.net
 * All rights reserved.
 * Support : 志凡(dzjzmj@163.com)
 *
 * Version :  0.5
 */

var FormValid = function(frm) {
    this.frm = frm;
    this.errMsg = new Array();
    this.errName = new Array();

    this.required = function(inputObj) {
        if (typeof(inputObj) == "undefined" || inputObj.value.trim() == "") {
            return false;
        }
        return true;
    }

    this.eqaul = function(inputObj, formElements) {
        var fstObj = inputObj;
        var sndObj = formElements[inputObj.getAttribute("eqaulName")];

        if (fstObj != null && sndObj != null) {
            if (fstObj.value != sndObj.value) {
               return false;
            }
        }
        return true;
    }

    this.gt = function(inputObj, formElements) {
        var fstObj = inputObj;
        var sndObj = formElements[inputObj.getAttribute("eqaulName")];

        if (fstObj != null && sndObj != null && fstObj.value.trim()!="" && sndObj.value.trim()!="") {
            if (fstObj.value <= sndObj.value) {
                 return false;
            }
        }
        return true;
    }

    this.compare = function(inputObj, formElements) {
        var fstObj = inputObj;
        var sndObj = formElements[inputObj.getAttribute("objectName")];
        if (fstObj != null && sndObj != null && fstObj.value.trim()!="" && sndObj.value.trim()!="") {
            if (!eval("fstObj.value" + inputObj.getAttribute("operate") + "sndObj.value")) {
                 return false;
            }
        }
        return true;
    }

    this.limit = function (inputObj) {
        var len = inputObj.value.length;
        if (len) {
            var minv = inputObj.getAttribute("min");
            var maxv = inputObj.getAttribute("max");
            minv = minv || 0;
            maxv = maxv || Number.MAX_VALUE;
            return minv <= len && len <= maxv;
        }
        return true;
    }

    this.range = function (inputObj) {
        var val = parseInt(inputObj.value);
        if (inputObj.value) {
            var minv = inputObj.getAttribute("min");
            var maxv = inputObj.getAttribute("max");
            minv = minv || 0;
            maxv = maxv || Number.MAX_VALUE;

            return minv <= val && val <= maxv;
        }
        return true;
    }

    this.requireChecked = function (inputObj) {
        var minv = inputObj.getAttribute("min");
        var maxv = inputObj.getAttribute("max");
        minv = minv || 1;
        maxv = maxv || Number.MAX_VALUE;

        var checked = 0;
        var groups = document.getElementsByName(inputObj.name);

        for(var i=0;i<groups.length;i++) {
            if(groups[i].checked) checked++;

        }
        return minv <= checked && checked <= maxv;
    }

    this.filter = function (inputObj) {
        var value = inputObj.value;
        var allow = inputObj.getAttribute("allow");
        if (value.trim()) {
            return new RegExp("^.+.(?=EXT)(EXT)$".replace(/EXT/g, allow.split(/s*,s*/).join("|")), "gi").test(value);
        }
        return true;
    }

    this.isNo = function (inputObj) {
        var value = inputObj.value;
        var noValue = inputObj.getAttribute("noValue");
        return value!=noValue;
    }
    this.checkReg = function(inputObj, reg, msg) {
        inputObj.value = inputObj.value.trim();

        if (inputObj.value == "") {
            return;
        } else {
            if (!reg.test(inputObj.value)) {
                this.addErrorMsg(inputObj.name,msg);
            }
        }
    }

    this.passed = function() {
        if (this.errMsg.length > 0) {
            FormValid.showError(this.errMsg,this.errName,this.frm.name);
            if (this.errName[0].indexOf("[")==-1) {
                frt = document.getElementsByName(this.errName[0])[0];
                if (frt.type!="radio" && frt.type!="checkbox") {
                    frt.focus();
                }
            }
            return false;
        } else {
          return FormValid.succeed();
        }
    }

    this.addErrorMsg = function(name,str) {
        this.errMsg.push(str);
        this.errName.push(name);
    }

    this.addAllName = function(name) {
        FormValid.allName.push(name);
    }

}
FormValid.allName = new Array();
FormValid.showError = function(errMsg) {
    var msg = "";
    for (i = 0; i < errMsg.length; i++) {
        msg += "- " + errMsg[i] + " ";
    }

    alert(msg);
}
FormValid.succeed = function () {
    return true;
}
function validator(frm) {
    var formElements = frm.elements;
    var fv = new FormValid(frm);

    for (var i=0; i<formElements.length;i++) {
        var validType = formElements[i].getAttribute("valid");
        var errorMsg = formElements[i].getAttribute("errmsg");
        if (!errorMsg) {
            errorMsg = "";
        }
        if (validType==null) continue;
        fv.addAllName(formElements[i].name);

        var vts = validType.split("|");
        var ems = errorMsg.split("|");
        for (var j=0; j<vts.length; j++) {
            var curValidType = vts[j];
            var curErrorMsg = ems[j];

            switch (curValidType) {
            case "isNumber":
            case "isEmail":
            case "isPhone":
            case "isMobile":
            case "isIdCard":
            case "isMoney":
            case "isZip":
            case "isQQ":
            case "isInt":
            case "isEnglish":
            case "isChinese":
            case "isUrl":
            case "isDate":
            case "isTime":
                fv.checkReg(formElements[i],RegExps[curValidType],curErrorMsg);
                break;
            case "regexp":
                fv.checkReg(formElements[i],new RegExp(formElements[i].getAttribute("regexp"),"g"),curErrorMsg);
                break;
            case "custom":
                if (!eval(formElements[i].getAttribute("custom")+"(formElements[i],formElements)")) {
                    fv.addErrorMsg(formElements[i].name,curErrorMsg);
                }
                break;
            default :
                if (!eval("fv."+curValidType+"(formElements[i],formElements)")) {
                    fv.addErrorMsg(formElements[i].name,curErrorMsg);
                }
                break;
            }
        }
    }
    return fv.passed();
}
String.prototype.trim = function() {
    return this.replace(/^s*|s*$/g, "");
}
var RegExps = function(){};
RegExps.isNumber = /^[-+]?d+(.d+)?$/;
RegExps.isEmail = /([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)/;
RegExps.isPhone = /^(((d{2,3}))|(d{3}-))?((0d{2,3})|0d{2,3}-)?[1-9]d{6,7}(-d{1,4})?$/;
RegExps.isMobile = /^(((d{2,3}))|(d{3}-))?13d{9}$/;
RegExps.isIdCard = /(^d{15}$)|(^d{17}[0-9Xx]$)/;
RegExps.isMoney = /^d+(.d+)?$/;
RegExps.isZip = /^[1-9]d{5}$/;
RegExps.isQQ = /^[1-9]d{4,10}$/;
RegExps.isInt = /^[-+]?d+$/;
RegExps.isEnglish = /^[A-Za-z]+$/;
RegExps.isChinese =  /^[u0391-uFFE5]+$/;
RegExps.isUrl = /^http://[A-Za-z0-9]+.[A-Za-z0-9]+[/=?%-&_~`@[]":+!]*([^<>""])*$/;
RegExps.isDate = /^d{4}-d{1,2}-d{1,2}$/;
RegExps.isTime = /^d{4}-d{1,2}-d{1,2}sd{1,2}:d{1,2}:d{1,2}$/;

本地下载