js表单验证插件的开发与编写
var $submit_form = $("#submit_form");
$("#btnAdd").click(function () {
if ($submit_form.form("validate")) {
var url = "security/installtrain/add";
if (key && key != ""){
url = "security/installtrain/upd";
}
var flag=true;
var paras = $submit_form.serialize();
if(flag){
$.post(url, paras, function (data) {
if (data.code == 0) {
if(data.data != null) {
key = data.data["trainId"];
$("input[name='trainId']").val(key);
}
$Core.UI.message.success("保存成功!");
//关闭窗口
}
else {
$Core.UI.message.error(data.msg);
}
});
$('#btnAdd').attr('disabled',"true");
flag = false;
}
}
});
(function ($) { /*** 统一设置datagrid 的一些默认参数*/
var rules = {
// 只允许输入英文字母或数字
engNum: {
validator: function (value) {
return /^[0-9a-zA-Z]*$/.test(value);
},
message: '请输入英文字母或数字'
},
// 只允许汉字、英文字母或数字
chsEngNum: {
validator: function (value, param) {
return /^([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z0-9])*$/.test(value);
},
message: '只允许汉字、英文字母或数字。'
},
// 只允许汉字、英文字母、数字及下划线
code: {
validator: function (value, param) {
return /^[\u0391-\uFFE5\w]+$/.test(value);
},
message: '只允许汉字、英文字母、数字及下划线.'
},
// 验证是否为合法的用户名
name: {
validator: function (value) { return value.isUserName(); },
message: "用户名不合法(字母开头,允许6-16字节,允许字母数字下划线)"
},
// 指定字符最小长度
minLength: {
validator: function (value, param) { return $.string.trim(value).length >= param[0]; },
message: "最少输入 {0} 个字符."
},
// 指定字符最大长度
maxLength: {
validator: function (value, param) { return $.string.trim(value).length = param[0]) && (param[1] || value = param[0]) && (param[1] || value $("#" + param[0] + " input[name='" + param[1] + "']").val(); //结束时间>开始时间
},
message: '结束时间应晚于起始时间'
}
};
$.extend($.fn.validatebox.defaults.rules, rules);
})(jQuery);
(function (window, $, undefined) {
// 定义 字符串对象(String) 扩展对象基元
coreString = function () { return String.apply(this, arguments); },
coreString.fn = coreString.prototype = {};
coreNullable.String = new String();
// 定义 jQuery 扩展对象基元
coreJquery = function () { return $.apply(this, arguments); },
coreJquery.fn = coreJquery.prototype = {};
coreJquery.string = coreString;
// 判断传入的对象是否是一个字符串。
coreString.isString = coreUtil.isString;
// 判断传入的字符串是否为Null或者为空字符串。
coreString.isNullOrEmpty = function (str) { return str === undefined || str === null || str === ""; };
coreString.prototype.isNullOrEmpty = function () { return coreString.isNullOrEmpty(this); };
// 判断传入的字符串是否为Null或者为空字符串或者全是空格。
coreString.isNullOrWhiteSpace = function (str) { return coreString.isNullOrEmpty(str) || coreString.trim(String(str)) === ""; };
coreString.prototype.isNullOrWhiteSpace = function () { return coreString.isNullOrWhiteSpace(this); };
// 判断传入的字符串是否为 HTML 代码段。
coreString.isHtmlText = function (str) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
return str.length >= 3 && str.charAt(0) === "";
};
coreString.prototype.isHtmlText = function () { return coreString.isHtmlText(this); };
// 用新字符串替换与给定字符串匹配的所有子串;该方法将返回源字符串处理后的一个副本,而不会改变源字符串的值。
coreString.replaceAll = function (str, substr, replacement, ignoreCase) {
if (!substr || substr == replacement) { return str; }
//var regexp = coreUtil.isRegExp(substr) ? substr : new RegExp(String(substr), ignoreCase ? "gm" : "igm");
//return str.replace(regexp, replacement);
str = coreString.isNullOrEmpty(str) ? "" : String(str);
var length = str.length, i = 0;
while (str.indexOf(substr) > -1 && i++ < length) { str = str.replace(substr, replacement); }
return str;
};
coreString.prototype.replaceAll = function (substr, replacement) { return coreString.replaceAll(this, substr, replacement); };
// 格式化字符串,类似于 .NET 中的 string.format 函数功能
// 使用方法:coreString.format('字符串{0}字符串{1}字符串','第一个变量','第二个变量','第三个变量', ...'第 N 个变量');
// 该方法将返回源字符串处理后的一个副本,而不会改变源字符串的值。
coreString.format = function (str, arg1, arg2, arg3, argn) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
var isArray = coreUtil.likeArray(arg1),
data = (isArray && !coreUtil.isString(arg1)) || coreUtil.isObject(arg1) ? arg1 : coreArray.range(arguments, 1);
if (isArray) {
for (var i = 0; i < data.length; i++) {
value = data[i] ? data[i] : "";
str = str.replace(new RegExp("\\{" + i + "}", "gm"), value);
}
} else {
for (var key in data) {
var value = proxy.call(data, key);
value = (value == null || value == undefined) ? "" : value;
str = str.replace(new RegExp("\\{" + key + "}", "gm"), value);
}
}
function proxy(key) { try { return eval("this[\"" + key + "\"]"); } catch (ex) { return ""; } }
return str;
};
coreString.prototype.format = function (arg1, arg2, arg3, argn) {
arguments = coreArray.insert(arguments, 0, this);
return coreString.format.apply(this, arguments);
};
// 获取字符串包含非 ASCII 码字符(例如中文、日文、俄文等)的 byte 字节长度。
coreString.getByteLen = function (str) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
var bytelen = 0, i = 0, length = str.length, cc = document.charset;
if (!cc) { cc = "utf-8"; }
cc = cc.toLowerCase();
var s = cc == "iso-8859-1" ? 5 : 2;
for (; i < length; i++) {
bytelen += str.charCodeAt(i) > 255 ? s : 1;
}
return bytelen;
};
coreString.prototype.getByteLen = function () { return coreString.getByteLen(this); };
// 判断当前字符串对象是否包含指定的字符串内容。
coreString.contains = function (str, val) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
return String(str).indexOf(val) > -1;
};
coreString.prototype.contains = function (val) { return coreString.contains(this, val); };
// 字符串反转;该方法将返回源字符串处理后的一个副本,而不会改变源字符串的值。
coreString.reverse = function (str) {
var charArray = [];
str = coreString.isNullOrEmpty(str) ? "" : String(str);
for (var i = str.length - 1; i > -1; i--) { charArray.push(str[i]); }
return charArray.join("");
};
coreString.prototype.reverse = function () { return coreString.reverse(this); };
// 去除字符串左边的空格;该方法将返回源字符串处理后的一个副本,而不会改变源字符串的值。
coreString.ltrim = function (str) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
return str.replace(/(^\s*)/g, "");
};
coreString.prototype.ltrim = function () { return coreString.ltrim(this); };
// 去除字符串右边的空格;该方法将返回源字符串处理后的一个副本,而不会改变源字符串的值。
coreString.rtrim = function () {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
return str.replace(/(\s*$)/g, "");
};
coreString.prototype.rtrim = function () { return coreString.rtrim(this); };
// 去除字符串左右两边的空格;该方法将返回源字符串处理后的一个副本,而不会改变源字符串的值。
coreString.trim = coreString.trim ? coreString.trim : coreUtil.trim;
coreString.prototype.trim = function () { return coreString.trim(this); };
// 返回一个新字符串,该字符串通过在此实例中的字符左侧填充空格或指定字符来来达到指定的总长度,从而使这些字符右对齐。
coreString.padLeft = function (str, len, paddingChar) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
paddingChar = coreString.isNullOrEmpty(paddingChar) || !paddingChar.length ? " " : paddingChar;
len = coreUtil.isNumeric(len) ? len : str.length;
if (str.length < len) { for (; str.length < len; str = paddingChar + str) { } }
return str;
};
coreString.prototype.padLeft = function (len, paddingChar) { return coreString.padLeft(this, len, paddingChar); };
// 返回一个新字符串,该字符串通过在此字符串中的字符右侧填充空格或指定字符来达到指定的总长度,从而使这些字符左对齐
coreString.padRight = function (str, len, paddingChar) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
paddingChar = coreString.isNullOrEmpty(paddingChar) || !paddingChar.length ? " " : paddingChar;
len = coreUtil.isNumeric(len) ? len : str.length;
if (str.length < len) { for (; str.length < len; str += paddingChar) { } }
return str;
};
coreString.prototype.padRight = function (len, paddingChar) { return coreString.padRight(this, len, paddingChar); };
// 返回字符串中的的字符,注意从 0 开始。
coreString.mid = function (str, start, len) {
if (!start) { start = 0; }
if (!len) { len = 0; }
str = coreString.isNullOrEmpty(str) ? "" : String(str);
return str.substr(start, len);
};
coreString.prototype.mid = function (start, len) { return coreString.mid(this, start, len); };
// 计算字符串的打印长度。
coreString.lengthOfPrint = function (str) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
return str.replace(/[^\x00-\xff]/g, "**").length;
};
coreString.prototype.lengthOfPrint = function () { return coreString.lengthOfPrint(this); };
// 判断当前 String 对象是否以指定的字符串开头。
coreString.startsWith = function (str, val) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
return str.substr(0, val.length) == val;
};
coreString.prototype.startsWith = function (val) { return coreString.startsWith(this, val); };
// 判断当前 String 对象是否以指定的字符串结尾。
coreString.endsWith = function (str, val) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
return str.substr(str.length - val.length) == val;
};
coreString.prototype.endsWith = function (val) { return coreString.endsWith(this, val); };
// 截取当前字符串左边的指定长度内容。
coreString.left = function (str, len) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
if (!coreUtil.isNumeric(len)) { len = parseInt(len, 10); }
if (len < 0 || len > str.length) { len = str.length; }
return str.substr(0, len);
};
coreString.prototype.left = function (len) { return coreString.left(this, len); };
// 截取当前字符串右边的指定长度内容。
coreString.right = function (str, len) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
if (!coreUtil.isNumeric(len)) { len = parseInt(len, 10); }
if (len < 0 || len > str.length) { len = str.length; }
return str.substring(str.length - len, str.length);
};
coreString.prototype.right = function (len) { return coreString.right(this, len); };
// 截取当前字符串左边的指定字节长度内容。
coreString.leftBytes = function (str, len) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
if (!coreUtil.isNumeric(len)) { len = parseInt(len, 10); }
var length = coreString.getByteLen(str), i = 0, bytelen = 0, cc = document.charset;
if (!cc) { cc = "utf-8"; }
cc = cc.toLowerCase();
var s = cc == "iso-8859-1" ? 5 : 2;
if (len < 0 || len > length) { len = length; }
for (; i < str.length; i++) {
bytelen += str.charCodeAt(i) > 255 ? s : 1;
if (bytelen == len) { break; }
if (bytelen > len) { i--; break; }
}
return coreString.left(str, i + 1);
};
coreString.prototype.leftBytes = function (len) { return coreString.leftBytes(this, len); };
// 截取当前字符串右边的指定字节长度内容。
coreString.rightBytes = function (str, len) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
if (!coreUtil.isNumeric(len)) { len = parseInt(len, 10); }
var length = coreString.getByteLen(str), i = 0, bytelen = 0, cc = document.charset;
if (!cc) { cc = "utf-8"; }
cc = cc.toLowerCase();
var s = cc == "iso-8859-1" ? 5 : 2;
if (len < 0 || len > length) { len = length; }
for (; i < str.length; i++) {
bytelen += str.charCodeAt(str.length - 1 - i) > 255 ? s : 1;
if (bytelen == len) { break; }
if (bytelen > len) { i--; break; }
}
return coreString.right(str, i + 1);
};
coreString.prototype.rightBytes = function (len) { return coreString.rightBytes(this, len); };
// 判断当前 String 对象是否是正确的长日期格式。
coreString.isLongDate = function (str) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
var r = str.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);
if (r == null) { return false; }
var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]);
return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6] && d.getSeconds() == r[7]);
};
coreString.prototype.isLongDate = function () { return coreString.isLongDate(this); };
// 判断当前 String 对象是否是正确的段日期格式。
coreString.isShortDate = function (str) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
var r = str.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if (r == null) { return false; }
var d = new Date(r[1], r[3] - 1, r[4]);
return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]);
};
coreString.prototype.isShortDate = function () { return coreString.isShortDate(this); };
// 判断当前 String 对象是否是正确的日期格式。
coreString.isDate = function (str) {
return coreString.isLongDate(str) || coreString.isShortDate(str);
};
coreString.prototype.isDate = function () { return coreString.isDate(this); };
// 判断当前 String 对象是否是正确的电话号码格式(中国)。
coreString.isTel = function (str) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(str);
};
coreString.prototype.isTel = function () { return coreString.isTel(this); };
// 判断当前 String 对象是否是正确的手机号码格式(中国)。
coreString.isMobile = function (str) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
return /^(13|14|15|17|18)\d{9}$/i.test(str);
};
coreString.prototype.isMobile = function () { return coreString.isMobile(this); };
// 判断当前 String 对象是否是正确的电话号码或者手机号码格式(中国)
coreString.isTelOrMobile = function (str) {
return coreString.isTel(str) || coreString.isMobile(str);
};
coreString.prototype.isTelOrMobile = function () { return coreString.isTelOrMobile(this); };
// 判断当前 String 对象是否是正确的传真号码格式
coreString.isFax = function (str) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(str);
};
coreString.prototype.isFax = function () { return coreString.isFax(this); };
// 判断当前 String 对象是否是正确的 电子邮箱地址(Email) 格式。
coreString.isEmail = function (str) {
str = coreString.isNullOrEmpty(str) ? "" : String(str);
return /^((([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.test(str);
};
})(window, jQuery);