Home > Web Front-end > JS Tutorial > body text

FormValid0.5 version released, with ajax custom validation example_form effects

WBOY
Release: 2016-05-16 19:10:04
Original
1133 people have browsed it
The latest update has modified that when the input element name contains [], a JS error will occur when the focus is moved to the element. This is only the case for IE. I haven’t found a good solution. I just put this situation to Excluded is that when the component name contains [], the focus will not be moved up. If you have a good solution, please contact me.
And made demo8 - combined with jquery to implement ajax custom validation
Download: formvalid.zip
Copy the code The code is as follows:

/*
 * 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            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]   "n";
    }

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

    for (var i=0; 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            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}$/;

本地下载
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template