var vCheck = {
name: "chkChecked",
warning: "請選擇其中一個選項",
getWarning: function($ctl) {
return ($ctl.attr("warning") || this.warning);
},
vd: function($ctl) {
var result = true;
switch ($ctl.attr("type").toLowerCase()) {
case "radio":
result = $(":radio[name$='" + $ctl.attr("name") + "']:checked").size() > 0;
break;
case "checkbox":
var ctlName = $ctl.attr("name");
var $boxs = $(":checkbox[name$='" + ctlName + "']");
// 適用於ASP.NET的CheckBoxList
if ($boxs.size() == 1 &&
ctlName.indexOf("$") > -1 &&
$ctl.next().get(0).tagName.toLowerCase() == "label") {
result = $(":checkbox[name^='" + ctlName.substring(0, ctlName.lastIndexOf("$")) + "']:checked").size() > 0;
}
else {
result = $boxs.filter(":checked").size() > 0;
}
break;
}
return result;
}
};
var vLength = {
name: "chkLength",
warning: "該欄位有限制字元數",
getWarning: function($ctl) {
return ($ctl.attr("warning") || this.warning);
},
vd: function($ctl) {
var result = true;
var value = $.trim($ctl.val());
var blntextarea = $ctl.get(0).tagName.toLowerCase() == "textarea";
if (blntextarea) value = value.replace(/\n/g, "\n\r");
var maxLen = $ctl.attr("maxLen") ?
$ctl.attr("maxLen") :
$ctl.attr("maxlength") ? $ctl.attr("maxlength") : 0;
this.warning = $ctl.attr("warning") ||
"該欄位最多只接受 " + maxLen + " 個字元數" +
(blntextarea ? "(換行佔2個字元)" : "");
result = (value.length <= maxLen);
return result;
}
};
var vEmail = {
name: "chkEmail",
warning: '請輸入正確的Email格式 [多筆以";"號隔開] ',
getWarning: function($ctl) {
return ($ctl.attr("warning") || this.warning);
},
vd: function($ctl) {
var result = true;
var emails = $.trim($ctl.val());
if (emails.length > 0) {
var filter = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i;
$.each(emails.split(';'), function(idx, item) {
if ($.trim(item) != "" && !filter.test($.trim(item))) {
result = false;
return false;
}
});
}
return result;
}
};