You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

423 lines
15 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* @name 表单验证JS帮助类
* @remark IsRequired 必输验证
* @remark IsMaxLength 验证最大长度
* @remark IsMinLength 验证最小长度
* @remark IsFloat 验证浮点数
* @remark IsFloat1 保留一位小数
* @remark IsMaxFloat 验证最大浮点数
* @remark IsMinFloat 验证最小浮点数
* @remark IsNumber 验证整数
* @remark IsNumberby100 验证100的整数倍
* @remark IsReg 验证正则表达式
* @remark IsRemote 验证数据唯一性(RemoteUrl 数据验证地址,RemoteKey1,RemoteKey2,RemoteKey3... 数据验证传输字段名RemoteValue1,RemoteValue2,RemoteValue3... 数据验证传输值的页面元素的Id)
* @remark
* @remark
*/
; var VerificationHelper = (function ($, window, document, undefined) {
/**
* 返回content中输入框验证结果
* @param content div或from的ID
* @return 验证结果true验证通过false验证不通过
*/
var checkFrom = function(content,myFun){
content = content || "body";
content = content == "body" ? content : "#" + content;
//去除所有错误提示
$(".warn-box", content).remove();
//验证
$("input[type='text']", content).each(function (index, dom) {
//去前后空格
$(this).val($.trim($(this).val()));
checkInput($(this));
});
$("input[type='password']", content).each(function (index, dom) {
//去前后空格
$(this).val($.trim($(this).val()));
checkInput($(this));
});
$("select", content).each(function (index, dom) {
checkSelect($(this));
});
$("textarea", content).each(function (index, dom) {
//去前后空格
$(this).val($.trim($(this).val()));
checkTextarea($(this));
});
//自定义验证方法
if (typeof (myFun) == "function") {
myFun();
}
//若控件值发生变动,则去除错误提示
$("input[type='text'],input[type='password'],textarea", content).unbind("change").change(function () {
$(this).next(".warn-box").remove();
});
$("select", content).change(function () {
$(this).next(".warn-box").remove();
});
//检测页面是否有错误提示有则返回false
if ($(".warn-box", content).size() > 0) {
return false;
} else {
return true;
}
};
/**
* 检测input输入
* @param textBox jquery对象
*/
var checkInput = function(textBox){
//验证必填项
if (textBox.hasClass("IsRequired") && ($.trim(textBox.val()) == "" || textBox.val() == undefined)) {
showValidateMsg(textBox.attr("id"), "请输入" + textBox.attr("MsgName"));
return;
}
//验证最大长度
if (textBox.hasClass("IsMaxLength") && $.trim(textBox.val()).length > 0 && $.trim(textBox.val()).length > parseInt(textBox.attr("MaxLength"))) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "的长度不能大于" + textBox.attr("MaxLength"));
return;
}
//验证最小长度
if (textBox.hasClass("IsMinLength") && $.trim(textBox.val()).length > 0 && $.trim(textBox.val()).length < parseInt(textBox.attr("MinLength"))) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "的长度不能小于" + textBox.attr("MinLength"));
return;
}
//验证整数
if (textBox.hasClass("IsNumber") && $.trim(textBox.val()).length > 0 && !/^[-]?\d+$/.test($.trim(textBox.val()))) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "必须为整数");
return;
}
//验证最大数
if (textBox.hasClass("IsMaxNumber") && parseInt($.trim(textBox.val()), 10) > parseInt(textBox.attr("MaxNumber"), 10)) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "不能大于" + textBox.attr("MaxNumber"));
return;
}
//验证最大数(含最大值)
if (textBox.hasClass("IsMaxNumber1") && parseInt($.trim(textBox.val()), 10) >= parseInt(textBox.attr("MaxNumber"), 10)) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "不能大于" + textBox.attr("MaxNumber"));
return;
}
//验证最小数
if (textBox.hasClass("IsMinNumber") && parseInt($.trim(textBox.val()), 10) < parseInt(textBox.attr("MinNumber"), 10)) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "不能小于" + textBox.attr("MinNumber"));
return;
}
//验证最小数(含最小值)
if (textBox.hasClass("IsMinNumber1") && parseInt($.trim(textBox.val()), 10) <= parseInt(textBox.attr("MinNumber"), 10)) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "不能小于" + textBox.attr("MinNumber"));
return;
}
//验证浮点数
if (textBox.hasClass("IsFloat") && $.trim(textBox.val()).length > 0 && !/^[-]?\d+(\.\d+)?$/.test($.trim(textBox.val()))) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "必须为数字");
return;
}
//验证正则表达式
if (textBox.hasClass("IsReg") && $.trim(textBox.val()).length > 0 && !new RegExp("^" + textBox.attr("Reg") + "$").test($.trim(textBox.val()))) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgReg"));
return;
}
//验证浮点数(含负数验证)
if (textBox.hasClass("IsFloat1") && $.trim(textBox.val()).length > 0 && !/^[-]?\d+(\.\d+)?$/.test($.trim(textBox.val()))) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "必须为数字");
return;
}
//保留一位小数
if (textBox.hasClass("IsFloat3") && $.trim(textBox.val()).length > 0 && !/^\d+(\.\d{0,1})?$/.test($.trim(textBox.val()))) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "最多为1位小数");
return;
}
//验证2位小数
if (textBox.hasClass("IsFloat2") && $.trim(textBox.val()).length > 0 && !/^[-]?\d+(\.\d{1,2})?$/.test($.trim(textBox.val()))) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "最多为2位小数");
return;
}
//验证4位小数
if (textBox.hasClass("IsFloat4") && $.trim(textBox.val()).length > 0 && !/^[-]?\d+(\.\d{1,4})?$/.test($.trim(textBox.val()))) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "最多为4位小数");
return;
}
//验证最大浮点数
if (textBox.hasClass("IsMaxFloat") && parseFloat($.trim(textBox.val())) > parseFloat(textBox.attr("MaxFloat"))) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "不能大于" + textBox.attr("MaxFloat"));
return;
}
//验证最小浮点数
if (textBox.hasClass("IsMinFloat") && parseFloat($.trim(textBox.val())) < parseFloat(textBox.attr("MinFloat"))) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "不能小于" + textBox.attr("MinFloat"));
return;
}
//验证100的整数倍
if (textBox.hasClass("IsNumberby100") && $.trim(textBox.val()).length > 0 && ($.trim(textBox.val())%100!=0)) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "必须为100的整数倍");
return;
}
//验证10的整数倍
if (textBox.hasClass("IsNumberby10") && $.trim(textBox.val()).length > 0 && ($.trim(textBox.val()) % 10 != 0)) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "必须为10的整数倍");
return;
}
//验证0.5的整数倍
if (textBox.hasClass("IsNumberby5") && $.trim(textBox.val()).length > 0 && ($.trim(textBox.val()) % 0.5 != 0)) {
showValidateMsg(textBox.attr("id"), textBox.attr("MsgName") + "必须为0.5的整数倍");
return;
}
////验证邮箱
//if (textBox.hasClass("IsMail") && $.trim(textBox.val()).length > 0 && $.trim(textBox.val()) != "" && !/^\w+@\w+(\.\w+)+$/.test($.trim(textBox.val()))) {
// showValidateMsg(textBox.attr("id"), "邮箱格式不正确");
// return;
//}
//验证邮箱
if (textBox.hasClass("IsMail") && $.trim(textBox.val()).length > 0 && $.trim(textBox.val()) != "" && !/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test($.trim(textBox.val()))) {
showValidateMsg(textBox.attr("id"), "邮箱格式不正确");
return;
}
//验证位数
if (textBox.hasClass("IsDigit")) {
var Digit = textBox.attr("Digit") ? textBox.attr("Digit") : "";
if (Digit != "")
{
var a = Digit.split(",");
var i = a[0]//整数部分
var j = a[1]//小数部分
if (!new RegExp("^\\d{0," + i + "}\\.*\\d{0," + j + "}$").test($.trim(textBox.val())))
{
showValidateMsg(textBox.attr("id"),DigitMessage(i,j));
return;
}
}
}
//验证数据唯一性
if (textBox.hasClass("IsRemote")) {
var romoteUrl = textBox.attr("RemoteUrl") ? textBox.attr("RemoteUrl") : "";
//var romoteId = textBox.attr("RemoteId") ? $("#" + textBox.attr("RemoteId")).val() : "0";
//var romoteKey = textBox.attr("RemoteKey") ? textBox.attr("RemoteKey") : "";
var data = {};
//data["Id"] = romoteId;
var size = textBox.get(0).attributes.length;
var attrs = textBox.get(0).attributes;
for (var i = 0; i < size; i++) {
if (attrs[i].name.indexOf("remotekey") > -1) {
var index = attrs[i].name.replace("remotekey", "");
data[attrs[i].value] = $("#" + textBox.attr("RemoteValue" + index)).val();
}
}
//data[romoteKey] = $.trim(textBox.val());
data["rid"] = Math.random();
var validationResult = false;
if (romoteUrl != "" && $.trim(textBox.val()).length > 0) {
$.ajax({
url: romoteUrl,
dataType: "json",
async: false, //验证设为同步检测
data: data,
type: "POST",
success: function (data) {
if (data) {
validationResult = true;
showValidateMsg(textBox.attr("id"),"该"+ textBox.attr("MsgName") + "已存在");
}
}
});
}
if (validationResult)
return;
}
//非法字符验证
if ($.trim(textBox.val()).length > 0 && /((<[^>]#+>)|(<[^>]+)|([^>]+>))/g.test(textBox.val())) {
showValidateMsg(textBox.attr("id"), "请不要输入非法字符!");
return;
}
};
/**
* 检测select输入
* @param select jquery对象
*/
var checkSelect = function(select){
//验证必填项
if (select.hasClass("IsRequired") && (select.val() == "" || select.val() == undefined || select.val() == "0" || select.val() == "请选择")) {
showValidateMsg(select.attr("id"), "请选择" + select.attr("MsgName"));
return;
}
};
/**
* 检测textarea输入
* @param textarea jquery对象
*/
var checkTextarea = function(textarea){
//验证必填项
if (textarea.hasClass("IsRequired") && ($.trim(textarea.val()) == "" || textarea.val() == undefined)) {
showValidateMsg2(textarea.attr("id"),"请输入"+ textarea.attr("MsgName"));
return;
}
//验证最大长度
if (textarea.hasClass("IsMaxLength") && $.trim(textarea.val()).length > 0 && $.trim(textarea.val()).length > parseInt(textarea.attr("MaxLength"))) {
showValidateMsg2(textarea.attr("id"), textarea.attr("MsgName") + "的长度不能大于" + textarea.attr("MaxLength") + "字");
return;
}
//验证最小长度
if (textarea.hasClass("IsMinLength") && $.trim(textarea.val()).length > 0 && $.trim(textarea.val()).length < parseInt(textarea.attr("MinLength"))) {
showValidateMsg2(textarea.attr("id"), textarea.attr("MsgName") + "的长度不能小于" + textarea.attr("MinLength") + "字");
return;
}
//非法字符验证
if ($.trim(textarea.val()).length > 0 && /<\/?[^>]*>/g.test(textarea.val())) {
showValidateMsg2(textarea.attr("id"), "请不要输入非法字符!");
return;
}
};
/**
* 设置表单内容是否只读
* @param content div或from的ID
* @param flag 设置表单只读true只读false可输入
*/
var ChangeStatus = function(content, flag){
content = content || "body";
content = content == "body" ? content : "#" + content;
if (flag) {
//设为只读
$("input[type='text'],input[type='checkbox'],select,textarea", content).each(function (index, dom) {
$(this).attr({ "disabled": "disabled" });
});
} else {
//取消只读
$("input[type='text'],input[type='checkbox'],select,textarea", content).each(function (index, dom) {
$(this).removeAttr("disabled");
});
}
};
// /**
//* 错误提示1(input,select使用)
//* @param ctrlName 需要提示的dom元素ID
//* @param msg 提示信息
//*/
// var showValidateMsg = function (ctrlName, msg) {
// $("#" + ctrlName).addClass("warn");
// var validMsg = "<div class=\"warn-box\" id=\"warn-" + ctrlName + "\" style=\"display: inline-block;\"><b style=\"display: none;\"></b><p style=\"display: none;\">" + msg + "</p></div>";
// $(validMsg).insertAfter($("#" + ctrlName));
// $("#warn-" + ctrlName).hover(function () {
// $("#warn-" + ctrlName + " > b").toggle();
// $("#warn-" + ctrlName + " > p").toggle();
// });
// //alert(msg);
// };
// /**
// * 错误提示2(textarea使用)
// * @param ctrlName 需要提示的dom元素ID
// * @param msg 提示信息
// */
// var showValidateMsg2 = function (ctrlName, msg) {
// $("#" + ctrlName).addClass("warn");
// var outerHeight = $("#" + ctrlName).outerHeight();
// var validMsg = "<div class=\"warn-box\" id=\"warn-" + ctrlName + "\" style=\"display: inline-block;z-index: 12;margin-top:-" + outerHeight + "px;\"><b style=\"display: none;\"></b><p style=\"display: none;\">" + msg + "</p></div>";
// $(validMsg).insertAfter($("#" + ctrlName));
// $("#warn-" + ctrlName).hover(function () {
// $("#warn-" + ctrlName + " > b").toggle();
// $("#warn-" + ctrlName + " > p").toggle();
// });
// //alert(msg);
// };
return {
checkFrom: checkFrom,
ChangeStatus: ChangeStatus,
};
})(jQuery, window, document);
/**
* 错误提示1(input,select使用)
* @param ctrlName 需要提示的dom元素ID
* @param msg 提示信息
*/
function showValidateMsg(ctrlName, msg) {
if ($("#warn-" + ctrlName).size()) {
return;
}
$("#" + ctrlName).addClass("warn");
var validMsg = "<div class=\"warn-box\" id=\"warn-" + ctrlName + "\" style=\"display: inline-block;\"><b style=\"display: none;\"></b><p style=\"display: none;\">" + msg + "</p></div>";
$(validMsg).insertAfter($("#" + ctrlName));
$("#warn-" + ctrlName).hover(function () {
$("#warn-" + ctrlName + " > b").toggle();
$("#warn-" + ctrlName + " > p").toggle();
});
//alert(msg);
};
/**
* 错误提示2(textarea使用)
* @param ctrlName 需要提示的dom元素ID
* @param msg 提示信息
*/
function showValidateMsg2(ctrlName, msg) {
if ($("#warn-" + ctrlName).size()) {
return;
}
$("#" + ctrlName).addClass("warn");
var outerHeight = $("#" + ctrlName).outerHeight();
var validMsg = "<div class=\"warn-box\" id=\"warn-" + ctrlName + "\" style=\"display: inline-block;z-index: 12;margin-top:-" + outerHeight + "px;\"><b style=\"display: none;\"></b><p style=\"display: none;\">" + msg + "</p></div>";
$(validMsg).insertAfter($("#" + ctrlName));
$("#warn-" + ctrlName).hover(function () {
$("#warn-" + ctrlName + " > b").toggle();
$("#warn-" + ctrlName + " > p").toggle();
});
//alert(msg);
};
function DigitMessage(i, j)
{
var str = "";
var str1="0.";
var str2="";
for (i1 = 0; i1 < i; i1++)
{
str2=str2+"9";
}
for (j1 = 0; j1 < j; j1++)
{
str1 = str1 + "0";
if (j1== 0) { str2 = str2 + ".9"; }
else { str2 = str2 + "9";}
}
str = "请输入" + str1 + "到" + str2 + "之间的数字";
return str;
}