?? verify.js
字號:
var Verify = {};
Verify.IsEmpty = function (text) {
if (typeof(text) == 'string' && text.Trim() != '')
return false;
return true;
};
Verify.IsNumber = function (text) {
if (this.IsInt(text) || this.IsFloat(text))
return true;
return false;
};
Verify.IsInt = function (text) {
if (/^\d+$/.test(text))
return true;
return false;
};
Verify.IsFloat = function (text) {
if (/^\d*\.\d+$/.test(text))
return true;
return false;
};
// 標識是否檢查所有表單項
Verify.CheckAll = false;
// [內部調用] 檢查所有必填表單項是否填寫完畢
Verify._Check = function (/* form, fieldname1, fieldname2, ..., fieldnameN */) {
if (arguments.length < 2) return;
var form = arguments[0];
if (!form.tagName || form.tagName.toLowerCase() != 'form') return;
var check = arguments[arguments.length - 1];
var over = true;
for (var i = 1; i < arguments.length; i++) {
var _over = true;
var field = form[arguments[i]];
if (!field) continue;
// input[type="checkbox"],input[type="radio"]
if (field.length > 1 && !field.tagName) {
for (var j = 0; j < field.length; j++) {
if (this.CheckOne(field[j])) break;
}
if (j == field.length) {
_over = false;
if (over && !_over) over = false;
if (!this.CheckAll) break;
}
if (this.CheckAll) Verify.Callback(field[j % field.length]);
}
// input[type="text"],select,textarea
else {
_over = this.CheckOne(field);
if (over && !_over) over = false;
if (!over && !this.CheckAll) break;
if (this.CheckAll) Verify.Callback(field);
}
}
Verify.CheckAll = false;//alert(over);
return over;
};
// [外部調用] 檢查所有必填表單項是否填寫完畢
Verify.Check = function (/* form, submitname, fieldname1, fieldname2, ..., fieldnameN, checkFunction */) {
if (arguments.length < 2) return;
var form = arguments[0];
if (typeof form != 'object') form = document.forms[form];
if (!form.tagName || form.tagName.toLowerCase() != 'form') return;
var submit = form.elements[arguments[1]];
if (!submit.tagName || submit.tagName.toLowerCase() != 'input' || submit.type != 'submit') return;
var check = arguments[arguments.length - 1];
if (TypeOf(check) != 'function') return;
var args = Array.prototype.slice.call(arguments, 2, arguments.length - 1);
args.unshift(form);
args.push(check);
this.AttachEvent.apply(this, args);
var b = this._Check.apply(this, args);
submit.disabled = !b;
return b;
};
// 表單域對象綁定事件
Verify.AttachEvent = function (/* form, fieldname1, fieldname2, ..., fieldnameN, checkFunction */) {
var form = arguments[0];
var check = arguments[arguments.length - 1];
var args = Array.prototype.slice.call(arguments, 0, arguments.length - 1);
if (check) {
if (check.args) {
if (check.args.join() != args.join())
this.AttachEvent.apply(this, check.args.concat(null));
else
return;
}
check.args = args;
//alert(check.args + ' ' + check.args.concat(''));
}
for (var i = 1; i < arguments.length - 1; i++) {
var field = form[arguments[i]];
if (!field) continue;
// input[type="checkbox"],input[type="radio"]
if (field.length > 1 && !field.tagName) {
for (var j = 0; j < field.length; j++) {
if (check) {
field[j].check = check;
Events.AttachEvent(field[j], 'click', this.ToCall);
//field[j].onclick = function () {Verify.Callback(this, check)};
}
else {
Events.RemoveEvent(field[j], 'click', this.ToCall);
}
}
}
// input[type="text"],select,textarea
else {
field.check = this.ToCall;
switch (field.tagName.toLowerCase()) {
case 'input':
switch (field.type) {
case 'text':
case 'password':
if (check) {
field.check = check;
Events.AttachEvent(field, 'blur', this.ToCall);
Events.AttachEvent(field, 'change', this.ToCall);
Events.AttachEvent(field, 'keyup', this.ToCall);
}
else {
Events.RemoveEvent(field, 'blur', this.ToCall);
Events.RemoveEvent(field, 'change', this.ToCall);
Events.RemoveEvent(field, 'keyup', this.ToCall);
}
//field.onblur = field.onchange = field.onkeyup = check && (function () {Verify.Callback(this, check)});
break;
case 'radio':
case 'checkbox':
if (check) {
field.check = check;
Events.AttachEvent(field, 'click', this.ToCall);
}
else {
Events.RemoveEvent(field, 'click', this.ToCall);
}
//field.onclick = check && (function () {Verify.Callback(this, check)});
break;
}
//field.onblur = field.onchange = field.onkeyup = function () {Verify.Callback(this);check();};
break;
case 'select':
if (check) {
field.check = check;
Events.AttachEvent(field, 'blur', this.ToCall);
Events.AttachEvent(field, 'change', this.ToCall);
}
else {
Events.RemoveEvent(field, 'blur', this.ToCall);
Events.RemoveEvent(field, 'change', this.ToCall);
}
//field.onblur = field.onchange = check && (function () {Verify.Callback(this, check)});
break;
case 'textarea':
if (check) {
field.check = check;
Events.AttachEvent(field, 'blur', this.ToCall);
Events.AttachEvent(field, 'change', this.ToCall);
Events.AttachEvent(field, 'keyup', this.ToCall);
}
else {
Events.RemoveEvent(field, 'blur', this.ToCall);
Events.RemoveEvent(field, 'change', this.ToCall);
Events.RemoveEvent(field, 'keyup', this.ToCall);
}
//field.onblur = field.onchange = field.onkeyup = check && (function () {Verify.Callback(this, check)});
break;
}
}
}
};
// @Return:
// true: 通過
// false: 不通過
Verify.CheckOne = function (field) {
switch (field.tagName.toLowerCase()) {
case 'input':
switch (field.type) {
case 'text':
case 'password':
return !this.IsEmpty(field.value);
break;
case 'radio':
case 'checkbox':
var fields = field.form[field.name];
if (fields.length) {
for (var i = 0; i < fields.length; i++) {
if (fields[i].checked) break;
}
return (i == fields.length ? false : true);
}
else {
return fields.checked;
}
break;
}
break;
case 'select':
return field.options[field.selectedIndex].value != '';
break;
case 'textarea':
return !this.IsEmpty(field.value);
break;
}
return false;
};
Verify.ToCall = function () {
//alert(this);
Verify.Callback(this, this.check)
}
// 執行回調用戶定義的方法
Verify.Callback = function (field, check) {
var checkone;
try {
checkone = eval(field.name + 'Check');
}
catch (e) {
checkone = function () {};
}
var b = this.CheckOne(field);
if (checkone.b !== b) {
checkone.b = b;
checkone(b);
}
check && check();
};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -