클래식 포럼에 한 번 게시한 적이 있습니다. 개인 프로젝트의 백그라운드 처리에 이 기능을 사용하면 간단한 양식 확인이 매우 편리합니다.
코드가 너무 부풀어 오르는 것을 원하지 않아서 자주 사용하지 않고 추가되지 않는 기능이 많습니다.
포산 측 의견에는 변함이 없습니다. 게을러서 ㅋㅋㅋ
오늘 omeweb도 버전도 수정하고 많이 수정한거 봤는데 변경사항이 꽤 괜찮네요 감사합니다.
소스 코드는 다음과 같습니다.
//문자열 양쪽 공백 제거
String.prototype.trim = function () {
return this.replace(/ (^s ) |(s $)/g, "");
}
//문자열이 비어 있는지 확인
String.prototype.isEmpty = function () {
return !( /.?[ ^s ] /.test(this));
}
//값이 지정된 두 값 사이에 있는지 확인
String.prototype.isBetween = function (val, min, max) {
return isNaN(val) == false && val >= min && val }
//최대값 또는 최소값 가져오기
String.prototype.getBetweenVal = function (뭐 ) {
var val = this.split(',');
var min = val[0]
var max = val[1] == null ? [1 ];
if (parseInt(min) >parseInt(max)) {
min = max
max = val[0]
}
return what == 'min ' ? (isNaN(min) ? null : min) : (isNaN(max) ? null : max);
}
var validator = function (formObj) {
this.allTags = formObj.getElementsByTagName( '*');
//문자열 검증 정규식
this.reg = new Object()
this.reg.english = /^[a-zA-Z0-9_-] $/;
this.reg.chinese = /^[u0391-uFFE5] $/;
this.reg.number = /^[- ]?d (.d )?$/;
this.reg. 정수 = /^[- ]?d $/;
this.reg.float = /^[- ]?d (.d )?$/
this.reg.date = /^(d{ 4})(-|/)(d{1,2})2(d{1,2})$/;
this.reg.email = /^w ([- .]w )*@w ([-.]w )*.w ([-.]w )*$/;
this.reg.url = /^(((ht|f)tp(s?))://)[ a-zA-Z0-9] .[a-zA-Z0-9] [/=?%-&_~`@[]
': !]*([^""])*$ /;
this.reg.phone = /^(((d{2,3}))|(d{3}-))?((0d{2,3})|0d{2,3} -)?[1-9]d{6,7}(-d
{1,4})?$/
this.reg.mobile = /^(((d{2,3} ))|(d{3}-))?((13d{9})|(159d{8}))$/
this.reg.ip = /^(0|[1-9]d ?|[0-1]d{2}|2[0-4]d|25[0-5]).(0|[1-9]d?|[0-1]d{2}|2 [0-4]
d|25[0-5]).(0|[1-9]d?|[0-1]d{2}|2[0-4]d|25[0 -5]).(0|[1-9]d?|[0-1]d{2}|2[0-4]d|25[0-
5])$/; this.reg.zipcode = /^[1-9]d{5}$/;
this.reg.qq = /^[1-9]d{4,10}$/; reg.msn = /^w ([- .]w )*@w ([-.]w )*.w ([-.]w )*$/
this.reg.idcard = /(^ d{15}$)|(^d{17}[0-9Xx]$)/;
//오류 출력 정보
this.tip = new Object()
this.tip.unknow = '검증 유형을 찾을 수 없어 검증을 수행할 수 없습니다. ';
this.tip.paramError = '매개변수 설정이 잘못되어 인증을 할 수 없습니다. ';
this.tip.required = '비워둘 수 없습니다. ';
this.tip.english = '영문 및 밑줄(a-zA-Z0-9_)만 허용됩니다. ';
this.tip.chinese = '한자만 허용됩니다. ';
this.tip.number = '올바른 숫자가 아닙니다. ';
this.tip.integer = '유효한 정수가 아닙니다. ';
this.tip.float = '유효한 부동 소수점 숫자가 아닙니다. ';
this.tip.date = '올바른 날짜 형식이 아닙니다. (예: 2007-06-29)';
this.tip.email = '올바른 이메일 형식이 아닙니다. ';
this.tip.url = '올바른 하이퍼링크 형식이 아닙니다.';
this.tip.phone = '올바른 전화번호가 아닙니다. ';
this.tip.mobile = '유효한 휴대폰 번호가 아닙니다. ';
this.tip.ip = '유효한 IP 주소가 아닙니다. ';
this.tip.zipcode = '유효한 우편번호가 아닙니다. ';
this.tip.qq = '유효한 QQ 번호가 아닙니다. ';
this.tip.msn = '유효한 MSN 계정이 아닙니다. ';
this.tip.idcard = '유효한 ID번호가 아닙니다.';
//컨트롤 이름 가져오기
this.getControlName = function ()
{
return this.element.getAttribute('controlName') == null
'값을 지정하세요. 컨트롤 '
ele.focus(); }
}
//테두리 색상 설정
this.setBorderColor = function (ele) {
var borderColor =
ele.currentStyle.borderColor = '#ff9900';
ele.onkeyup = function () {
this.style.borderColor = borderColor
}
}
//오류 피드백 정보 출력
this.feedback = function (type) {
try > var msg = eval('this.tip.' type) == undefine ? 🎜> this.getControlName() eval('this.tip.' type); } catch (e) {
msg = type;
}
this.setBorderColor(this.element); Alert(msg);
this.setFocus(this.element) };
//문자열 검증 수행
this.validate = function () {
var v = this.element.value;
//비어있지 않은 것이 허용되는지 확인
var require = this.element.getAttribute ('required')
if (required != null && v.isEmpty()) {
this .feedback('필수');
false
}
//형식이 적합한지 확인
var dataType = this.element.getAttribute('dataType')
if (!v.isEmpty() && dataType != null && dataType.toLowerCase() != 'password') {
dataType = dataType.toLowerCase();
try {
if (!(eval('this.reg.' dataType)).test(v)) {
이 .feedback(dataType); ; != null) {
시도 {
var data = eval( 'formObj.' 확인 '.value')
');
this.setBorderColor(this.element);
this.setFocus(this.element);
false를 반환합니다.
}
} catch(e) {
this.feedback('paramError');
false를 반환합니다.
}
}
//验证数字大小
var dataBetween = this.element.getAttribute('dataBetween');
if (!v.isEmpty() && dataBetween != null) {
var min = dataBetween.getBetweenVal('min');
var max = dataBetween.getBetweenVal('max');
if (min == null || max == null) {
this.feedback('paramError');
false를 반환합니다.
}
if (!v.isBetween(v.trim(), min, max)) {
this.feedback(this.getControlName() '必须是介于 ' 최소 '-' 최대 '之
间的数字。');
false를 반환합니다.
}
}
//验证字符长島
var dataLength = this.element.getAttribute('dataLength');
if (!v.isEmpty() && dataLength != null) {
var min = dataLength.getBetweenVal('min');
var max = dataLength.getBetweenVal('max');
if (min == null || max == null) {
this.feedback('paramError');
false를 반환합니다.
}
if (!v.isBetween(v.trim().length, min, max)) {
this.feedback(this.getControlName() '必须是 ' min '-' 최대 '个字符
。');
false를 반환합니다.
}
}
true를 반환;
};
//执行初始화작용작
this.init = function () {
for (var i=0; i
이.allTags[i].tagName.toUpperCase() == '선택' ||
this.allTags[i].tagName.toUpperCase( ) == 'TEXTAREA')
{
this.element = allTags[i];
if (!this.validate())
false를 반환합니다.
}
}
};
return this.init();
}