> 웹 프론트엔드 > JS 튜토리얼 > Ajax 사용자 정의 유효성 검사 example_form 효과가 포함된 FormValid0.5 버전 출시

Ajax 사용자 정의 유효성 검사 example_form 효과가 포함된 FormValid0.5 버전 출시

WBOY
풀어 주다: 2016-05-16 19:10:04
원래의
1165명이 탐색했습니다.
최신 업데이트에서는 입력 요소 이름에 []가 포함되어 있으면 해당 요소로 포커스를 이동할 때 JS 오류가 발생한다고 수정되었습니다. 이는 IE의 경우에만 해당됩니다. 이 상황을 Excluded로 설정하면 컴포넌트 이름에 []가 포함되어 있으면 포커스가 위로 이동되지 않습니다. 좋은 해결책이 있으면 저에게 연락하십시오.
그리고 Ajax 사용자 정의 유효성 검사를 구현하기 위해 jquery와 결합된 데모8을 만들었습니다.
다운로드: formvalid.zip
코드를 복사하세요 코드는 다음과 같습니다.

/*
 * 저작권(c) 2006-2008 coderhome.net
 * 모든 권리는 보유됩니다.
 * 지원 : 志凡(dzjzmj@163.com)
 *
 * 버전 :  0.5
 */

var FormValid = function(frm) {
    이것입니다. frm = frm;
    this.errMsg = new Array();
    this.errName = new Array();

    this.required = function(inputObj) {
        if (typeof(inputObj) == "정의되지 않음" || inputObj.value.trim() == "") {
            return false;
        }
        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;
            }
        }
        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) {
                 반환 false;
            }
        }
        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;
            }
        }
        true를 반환;
    }

    this.limit = 함수(inputObj) {
        var len = inputObj.value.length;
        if (len) {
            var minv = inputObj.getAttribute('min');
            var maxv = inputObj.getAttribute('max');
            minv = minv || 0;
            maxv = maxv || 번호.MAX_VALUE;
            return minv <= len && len <= maxv;
        }
        true를 반환합니다.
    }

    this.range = 함수(inputObj) {
        var val = parseInt(inputObj.value);
        if (inputObj.value) {
            var minv = inputObj.getAttribute('min');
            var maxv = inputObj.getAttribute('max');
            minv = minv || 0;
            maxv = maxv || 번호.MAX_VALUE;

            return minv <= val && val <= maxv;
        }
        true를 반환합니다.
    }

    this.requireChecked = 함수(inputObj) {
        var minv = inputObj.getAttribute('min');
        var maxv = inputObj.getAttribute('max');
        minv = minv || 1;
        maxv = maxv || 번호.MAX_VALUE;

        var 선택됨 = 0;
        var groups = document.getElementsByName(inputObj.name);

        for(var i=0;i            if(groups[i].checked) 선택됨 ;

        }
        반환 minv <= 선택됨 && 선택됨 <= maxv;
    }

    this.filter = 함수(inputObj) {
        var value = inputObj.value;
        var allow = inputObj.getAttribute('allow');
        if (value.trim()) {
            새 RegExp("^. .(?=EXT)(EXT)$".replace(/EXT/g, allow.split(/s*,s) 반환 */).join("|")), "gi").test(value);
        }
        true를 반환합니다.
    }

    this.isNo = 함수(inputObj) {
        var value = inputObj.value;
        var noValue = inputObj.getAttribute('noValue');
        반환 값!=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();
               }
            }
            false를 반환합니다.
        } else {
          return FormValid.succeed();
        }
    }

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

    this.addAllName = 함수(이름) {
        FormValid.allName.push(이름);
    }

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

    경고(msg);
}
FormValid.succeed = 함수 () {
    return true;
}
함수 유효성 검사기(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) 계속;
        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];

           스위치(curValidType) {
            case 'isNumber':
            case 'isEmail':
            case 'isPhone':       케이스 'isMobile':
            케이스 'isIdCard' :
           케이스 'isMoney':
            케이스 'isZip':
            케이스 'isQQ':
           케이스 'isInt'
            케이스 'isEnglish':
            케이스 'isEnglish':
            case 'isUrl':
            case 'isDate':
            case 'isTime':
              fv.checkReg(formElements[i],RegExps[curValidType ],curErrorMsg);
                휴식;
            case 'regexp':
               fv.checkReg(formElements[i],new RegExp(formElements[i].getAttribute('regexp'),"g"),curErrorMsg);
                휴식;
            사례 '맞춤형':
               if (!eval(formElements[i].getAttribute('custom') '(formElements[i],formElements)')) {
                  fv.addErrorMsg(form 요소[i ].이름,curErrorMsg);
               }
                휴식;
           기본값 :
               if (!eval('fv.' curValidType '(formElements[i],formElements)')) {
                 fv.addErrorMsg(formElements[i].name ,curErrorMsg);
               }
                휴식;
            }
        }
    }
    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.is중국어 =  /^[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}$/;

本地下载
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿