| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444 |
- //验证
- ; RoadUI.Validate = function ()
- {
- var instance = this;
- this.bind = function ($elements)
- {
- return;
- /*
- if (!$elements || $elements.size() == 0)
- {
- return;
- }
- $elements.each(function ()
- {
- var $this = $(this);
- var type = $this.attr("type") || "text";
- if ((typeof type) == "string" && !type.isNullOrEmpty())
- {
- if (type.toLowerCase() == "radio" || type.toLowerCase() == "checkbox")
- {
- $this.bind("change", function () { instance.validateElement($this); });
- }
- else
- {
- $this.bind("blur", function () { instance.validateElement($this); });
- }
- }
- });
- */
- };
- this.unbind = function ()
- {
- $("[validate]").each(function ()
- {
- var $this = $(this);
- var type = $this.attr("type");
- if ((typeof type) == "string" && !type.isNullOrEmpty())
- {
- if (type.toLowerCase() == "radio" || type.toLowerCase() == "checkbox")
- {
- $this.unbind("change");
- }
- else
- {
- $this.unbind("blur");
- }
- }
- });
- };
- // form1 要验证的form,对象或id promptType提示方式 0:window.alert 1:输入框后面提示 2:输入框后面提示后显示图标,不显示文字
- this.validateForm = function (form1, promptType)
- {
- var $f;
- if ((typeof form1) == 'string')
- {
- $f = $("#" + $.trim(form1));
- }
- else
- {
- $f = $(form1);
- }
- if (!$f || $f.size() == 0)
- {
- return;
- }
- var flag = true;
- $("[validate]", $f).each(function ()
- {
- var flag1 = instance.validateElement($(this), promptType);
- if (!flag1 && promptType == 0)
- {
- flag = false;
- return false;
- }
- if (flag && !flag1)
- {
- flag = flag1;
- }
- });
- var e = arguments.callee.caller.arguments[0] || window.event;
- if (flag && e && e.srcElement != null)
- {
- var $submits = $("input[type='submit']", $f);
- $submits.prop("disabled", true);
- var eventElement = e.srcElement;
- if (eventElement)
- {
- $submits.each(function ()
- {
- if ($(this).get(0) === e.srcElement)
- {
- $f.append('<input type="hidden" name="' + $(this).attr("name") + '" value="' + $(this).val() + '" />');
- }
- });
- if ("INPUT" == e.srcElement.tagName)
- {
- $f.submit();
- }
- }
- }
-
- return flag;
- };
- this.validateElement = function ($element, promptType)
- {
- if (!$element)
- {
- return false;
- }
- var $ele = $($element);
- if (!$ele || $ele.size() == 0)
- {
- return false;
- }
- var validateType = $ele.attr("validate");
- if (validateType.isNullOrEmpty())
- {
- return false;
- }
- var validateArray = validateType.split(',');
- if (validateArray.length > 1)
- {
- var cannullFlag = false;
- var arrIndex = null;
- for (var j = 0; j < validateArray.length; j++)
- {
- if (validateArray[j].toLowerCase() == "canempty" || validateArray[j].toLowerCase() == "cannull")
- {
- cannullFlag = true;
- arrIndex = j;
- }
- }
- if (cannullFlag)
- {
- if (!isNaN(arrIndex))
- {
- validateArray.splice(arrIndex, 1);
- }
- var errmsg = "";
- var vflag = $ele.val() == null || $ele.val() == undefined || $.trim($ele.val()).length == 0;
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, false);
- if (vflag)
- {
- return true;
- }
- }
- }
- for (var i = 0; i < validateArray.length; i++)
- {
- if ($.trim(validateArray[i].toString()).length == 0)
- {
- continue;
- }
- var validateFlag1 = true;
- switch (validateArray[i].toString().trim().toLowerCase())
- {
- case "notnull":
- case "notempty":
- case "null":
- case "empty":
- var type1 = $ele.attr("type1");
- var errmsg = $ele.attr("errmsg") || "不能为空";
- validateFlag1 = this.isNotEmpty($ele.val());
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "int":
- case "integer":
- var errmsg = $ele.attr("errmsg") || "只能是整数";
- validateFlag1 = this.isInt($ele.val());
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "positiveint":
- var errmsg = $ele.attr("errmsg") || "只能是正整数";
- validateFlag1 = this.isPositiveInt($ele.val());
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "negativeint":
- var errmsg = $ele.attr("errmsg") || "只能是负整数";
- validateFlag1 = this.isNegativeInt($ele.val());
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "decimal":
- case "numeric":
- case "float":
- case "double":
- var errmsg = $ele.attr("errmsg") || "只能是有效数字";
- validateFlag1 = this.isDigital($ele.val());
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "positivefloat":
- var errmsg = $ele.attr("errmsg") || "只能是正实数";
- validateFlag1 = this.isPositiveFloat($ele.val());
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "negativefloat":
- var errmsg = $ele.attr("errmsg") || "只能是负实数";
- validateFlag1 = this.isNegativeFloat($ele.val());
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "chinese":
- var errmsg = $ele.attr("errmsg") || "只能是汉字";
- validateFlag1 = this.isChinese($ele.val());
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "mail":
- case "email":
- var errmsg = $ele.attr("errmsg") || "邮箱格式错误";
- validateFlag1 = this.isEmail($ele.val());
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "phone":
- case "mobile":
- case "phonenumber":
- case "mobilenumber":
- var errmsg = $ele.attr("errmsg") || "手机号码错误";
- validateFlag1 = this.isPhoneNumber($ele.val());
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "ip":
- var errmsg = $ele.attr("errmsg") || "IP地址格式错误";
- validateFlag1 = this.isIp($ele.val());
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "datetime":
- var errmsg = $ele.attr("errmsg") || "日期时间格式错误";
- validateFlag1 = this.isDateTime($ele.val());
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "let":
- var let = $ele.attr("validate_let") || "0";
- let = parseInt(let);
- if (!let) let = 0;
- var errmsg = $ele.attr("errmsg") || "不能小于" + let + "个字符";
- validateFlag1 = this.isLet($ele.val(), let);
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "get":
- var get = $ele.attr("validate_get") || "0";
- get = parseInt(get);
- if (!get) get = 0;
- var errmsg = $ele.attr("errmsg") || "不能大于" + get + "个字符";
- validateFlag1 = this.isGet($ele.val(), get);
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "ajax":
- var url = $ele.attr("validate_url");
- var validateResult = this.isAjax($ele.val(), url);
- validateFlag1 = validateResult[0];
- var errmsg = $ele.attr("errmsg") || validateResult[1];
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "equal":
- var equalid = $ele.attr("validate_equalfor");
- var $equalobj = $("#" + equalid.trim());
- var val = $equalobj != null && $equalobj.size() > 0 ? $equalobj.val() : "";
- validateFlag1 = this.isEqual($ele.val(), val);
- var errmsg = $ele.attr("errmsg") || "验证错误";
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "checkbox":
- var errmsg = $ele.attr("errmsg") || "至少选择一项";
- validateFlag1 = this.validateCheclbox($ele);
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "radio":
- var errmsg = $ele.attr("errmsg") || "必须选择一项";
- validateFlag1 = this.validateRadio($ele);
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- case "editor":
- var errmsg = $ele.attr("errmsg") || "不能为空";
- validateFlag1 = UE.getEditor($element.attr("id")).hasContents();
- //validateFlag1 = $.trim(html).length > 0;
- this.validateCompleted($ele, validateFlag1, promptType, errmsg, true);
- break;
- }
- if (!validateFlag1)
- {
- return false;
- }
- }
- return true;
- };
- this.validateCompleted = function ($element, isSuccess, promptType, errMessage, showInfo)
- {
- if (promptType == undefined)
- {
- promptType = 1;
- }
- switch (promptType)
- {
- case 0:
- if (!isSuccess)
- {
- window.alert(errMessage);
- try { $element.focus(); } catch (e) { }
- }
- break;
- case 1:
- case 2:
- var $span = $element.nextAll(".validate,.validate1,.validate2");
- if ($span.size() > 0)
- {
- $span.first()
- }
- else
- {
- $span = $('<span class="validate"></span>');
- $element.parent().append($span);
- }
- if (promptType == 1)
- {
- $span.text(isSuccess ? "" : errMessage);
- if (showInfo)
- {
- //如果验证成功则不显示任何信息,如果要显示则将 validate改为validate1
- $span.removeClass().addClass(isSuccess ? "validate" : promptType == 1 ? "validate2" : "validate3");
- }
- else
- {
- $span.removeClass().addClass("validate");
- }
- }
- else
- {
- if (!isSuccess)
- {
- $span.text("").attr("title", errMessage);;
- $span.removeClass("").addClass("validate3");
- }
- else
- {
- $span.removeClass("").addClass("validate").remove();
- }
- }
- break;
- }
- };
- this.isNotEmpty = function (val)
- {
- return val != null && val != undefined && $.trim(val.toString()).length > 0;
- };
- this.isDigital = function (val)
- {
- return this.isInt(val) || this.isFloat(val);
- };
- this.isInt = function (val)
- {
- var reg = /^(-|\+)?\d+$/;
- return reg.test(val);
- };
- this.isPositiveInt = function (val)
- {
- return this.isInt(val) && parseInt(val) >= 0;
- };
- this.isNegativeInt = function (val)
- {
- return this.isInt(val) && parseInt(val) < 0;
- };
- this.isFloat = function (val)
- {
- var reg = new RegExp("^[0-9]*\.[0-9]+$");
- return reg.exec(val) && this.isInt($.trim(val).substring(0, 1));
- };
- this.isPositiveFloat = function (val)
- {
- return (this.isFloat(val) || this.isInt(val)) && parseFloat(val) >= 0;
- };
- this.isNegativeFloat = function (val)
- {
- return (this.isFloat(val) || this.isInt(val)) && parseFloat(val) < 0;
- };
- this.isChinese = function (val)//是否为中文
- {
- var reg = /^[\u0391-\uFFE5]+$/;
- return reg.test(val);
- };
- this.isEmail = function (val)//是否为email
- {
- var reg = /^[-_A-Za-z0-9\.]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;
- return reg.test(val);
- };
- this.isIp = function (val)//是否为IP
- {
- var check = function (v) { try { return (v <= 255 && v >= 0); } catch (x) { return false; } }
- var re = val.split("."); return (re.length == 4) ? (check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])) : false;
- };
- this.isPhoneNumber = function (val)//是否为手机号码
- {
- return /^13\d{9}$/g.test(val) || (/^15[0-35-9]\d{8}$/g.test(val)) || (/^18[00-9]\d{8}$/g.test(val))
- };
- this.isDateTime = function (val)
- {
- return true;
- };
- this.isAjax = function (val, url)
- {
- var txt = "";
- $.ajax({ url: url, async: false, type: "POST", data: { "value": val }, cache: false, complete: function (response)
- {
- txt = $.trim(response.responseText);
- }
- });
- return ["1" == txt || "true" == txt, txt];
- };
- this.isLet = function (val, let)
- {
- if (!this.isNotEmpty(val) || !this.isInt(let))
- {
- return false;
- }
- return $.trim(val).length >= parseInt(let);
- };
- this.isGet = function (val, get)
- {
- if (!this.isNotEmpty(val) || !this.isInt(get))
- {
- return true;
- }
- return $.trim(val).length <= parseInt(get);
- };
- this.isEqual = function (val, val1)
- {
- return val === val1;
- };
- this.validateCheclbox = function ($e)
- {
- var name = $e.attr('name');
- return $(":checkbox:checked[name='" + $.trim(name) + "']").size() > 0;
- };
- this.validateRadio = function ($e)
- {
- var name = $e.attr('name'); var flag = true;
- return $(":radio:checked[name='" + $.trim(name) + "']").size() > 0;
- };
- }
|