var FormValid = function(frm) { this.frm = frm; this.errMsg = new Array(); this.errName = new Array(); // 输入值不能为空 this.required = function(inputObj) { if (typeof (inputObj) == "undefined" || inputObj.value.trim() == "") { return false; } return true; }; this.mustOne = function(inputObj) { var fstObj = inputObj; if (fstObj != null) { for (var i = 0; i < fstObj.value.length; i++) { if (fstObj.value.charAt(i) == "1") { return true; } } } return false; }; this.equal = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('eqaulName')]; if (fstObj != null && sndObj != null) { if (fstObj.value != sndObj.value) { return false; } } return true; }; // 数字对比,输入值要大于对比值 this.numgt = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('eqaulName')]; if (fstObj != null && sndObj != null && fstObj.value.trim() != '' && sndObj.value.trim() != '') { if (fstObj.value - sndObj.value < 0) { return false; } } return true; }; // 数字对比,输入值要小于对比值 this.numdt = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('eqaulName')]; if (fstObj != null && sndObj != null && fstObj.value.trim() != '' && sndObj.value.trim() != '') { if (fstObj.value - sndObj.value > 0) { return false; } } return true; }; // 数字对比,输入值不能等于对比值 this.noequal = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('eqaulName')]; if (fstObj != null && sndObj != null && fstObj.value.trim() != '' && sndObj.value.trim() != '') { if (fstObj.value == sndObj.value) { return false; } } return true; }; // 输入值大于对比日期 this.gt = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('eqaulName')]; if (fstObj != null && sndObj != null && fstObj.value.trim() != '' && sndObj.value.trim() != '') { var i = ""; if (fstObj.value.indexOf('-') > 0) { i = '-'; } else if (fstObj.value.indexOf('/') > 0) { i = '/'; } else if (fstObj.value.indexOf('.') > 0) { i = '.'; } var fs = fstObj.value.split(i); var fsYear = fs[0]; var fsMonth = fs[1]; var fsDay = fs[2]; var sn = sndObj.value.split('-'); var snYear = sn[0]; var snMonth = sn[1]; var snDay = sn[2]; if (fsYear - snYear < 0) { return false; } else if (fsYear == snYear && fsMonth - snMonth < 0) { return false; } else if (fsYear == snYear && fsMonth == snMonth && fsDay - snDay <= 0) { return false; } } return true; }; // 输入值大于等于对比日期 this.dt = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('eqaulName1')]; if (fstObj != null && sndObj != null && fstObj.value.trim() != '' && sndObj.value.trim() != '') { var i = ""; if (fstObj.value.indexOf('-') > 0) { i = '-'; } else if (fstObj.value.indexOf('/') > 0) { i = '/'; } else if (fstObj.value.indexOf('.') > 0) { i = '.'; } else { if (fstObj.value - sndObj.value > 0) return false; } var fs = fstObj.value.split(i); var fsYear = fs[0]; var fsMonth = fs[1]; var fsDay = fs[2]; var sn = sndObj.value.split('-'); var snYear = sn[0]; var snMonth = sn[1]; var snDay = sn[2]; if (fsYear - snYear < 0) { return false; } else if (fsYear == snYear && fsMonth - snMonth < 0) { return false; } else if (fsYear == snYear && fsMonth == snMonth && fsDay - snDay < 0) { return false; } } return true; }; // 输入值小于对比日期 this.today = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('eqaulName2')]; if (fstObj != null && sndObj != null && fstObj.value.trim() != '' && sndObj.value.trim() != '') { var i = ""; if (fstObj.value.indexOf('-') > 0) { i = '-'; } else if (fstObj.value.indexOf('/') > 0) { i = '/'; } else if (fstObj.value.indexOf('.') > 0) { i = '.'; } var fs = fstObj.value.split(i); var fsYear = fs[0]; var fsMonth = fs[1]; var fsDay = fs[2]; var sn = sndObj.value.split('-'); var snYear = sn[0]; var snMonth = sn[1]; var snDay = sn[2]; if (fsYear - snYear > 0) { return false; } else if (fsYear == snYear && fsMonth - snMonth > 0) { return false; } else if (fsYear == snYear && fsMonth == snMonth && fsDay - snDay > 0) { return false; } return true; } return true; }; this.today2 = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('eqaulName2')]; if (fstObj != null && sndObj != null && fstObj.value.trim() != '' && sndObj.value.trim() != '') { var fs = fstObj.value.split('-'); var fsYear = parseInt(fs[0]); var fsMonth = parseInt(fs[1]); var fsDay = parseInt(fs[2]); var sn = sndObj.value.split('-'); var snYear = parseInt(sn[0]); var snMonth = parseInt(sn[1]); var snDay = parseInt(sn[2]); if (fsYear < snYear) { return false; } else if (fsYear == snYear && fsMonth < snMonth) { return false; } else if (fsYear == snYear && fsMonth == snMonth && fsDay < snDay) { return false; } } return true; }; this.today3 = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('eqaulName3')]; if (fstObj != null && sndObj != null && fstObj.value.trim() != '' && sndObj.value.trim() != '') { var fs = fstObj.value.split('-'); var fsYear = parseInt(fs[0]); var fsMonth = parseInt(fs[1]); var fsDay = parseInt(fs[2]); var sn = sndObj.value.split('-'); var snYear = parseInt(sn[0]); var snMonth = parseInt(sn[1]); var snDay = parseInt(sn[2]); if (fsYear < snYear) { return false; } else if (fsYear == snYear && fsMonth < snMonth) { return false; } else if (fsYear == snYear && fsMonth == snMonth && fsDay < snDay) { return false; } } return true; }; // 验证是否为固定电话(0570~0580) this.gddh = function(inputObj) { var beg = inputObj.value.substring(0, 1); var beg1 = inputObj.value.substring(1, 2); var beg2 = inputObj.value.substring(2, 3); var beg3 = inputObj.value.substring(3, 4); if (beg == 0 && beg1 == 5 && beg2 == 8 && beg3 == 0) { return true; } if (beg != 0 || beg1 != 5 || beg2 != 7) { return false; } return true; }; // 判断inputObj的值是否大于等于eqaulDate的值。若小于,则返回false,否则返回true this.compDate = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('eqaulDate')]; if (fstObj != null && sndObj != null && fstObj.value.trim() != '' && sndObj.value.trim() != '') { var fs = fstObj.value.split('-'); var fsYear = parseInt(fs[0]); var fsMonth = parseFloat(fs[1]); var fsDay = parseFloat(fs[2]); var sn = sndObj.value.split('-'); var snYear = parseInt(sn[0]); var snMonth = parseFloat(sn[1]); var snDay = parseFloat(sn[2]); if (fsYear < snYear) { return false; } else if (fsYear == snYear && fsMonth < snMonth) { return false; } else if (fsYear == snYear && fsMonth == snMonth && fsDay < snDay) { return false; } } return true; }; this.compDateGt = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('eqaulDate')]; alert(sndObj.value); if (fstObj != null && sndObj != null && fstObj.value.trim() != '' && sndObj.value.trim() != '') { var fs = fstObj.value.split('-'); var fsYear = parseInt(fs[0]); var fsMonth = parseInt(fs[1]); var fsDay = parseInt(fs[2]); var sn = sndObj.value.split('-'); var snYear = parseInt(sn[0]); var snMonth = parseInt(sn[1]); var snDay = parseInt(sn[2]); if (fsYear > snYear) { return false; } else if (fsYear == snYear && fsMonth > snMonth) { return false; } else if (fsYear == snYear && fsMonth == snMonth && fsDay > snDay) { return false; } } return true; }; this.compare = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('objectName')]; if (fstObj != null && sndObj != null && fstObj.value.trim() != '' && sndObj.value.trim() != '') { if (!(eval(parseFloat(fstObj.value) + inputObj.getAttribute('operate') + parseFloat(sndObj.value)))) { return false; } } return true; }; this.limit = function(inputObj) { var len = inputObj.value.length; if (len) { var minv = parseInt(inputObj.getAttribute('min')); var maxv = parseInt(inputObj.getAttribute('max')); minv = minv || 0; maxv = maxv || Number.MAX_VALUE; return minv <= len && len <= maxv; } return true; }; this.range = function(inputObj) { var val = parseInt(inputObj.value); if (inputObj.value) { var minv = parseInt(inputObj.getAttribute('min')); var maxv = parseInt(inputObj.getAttribute('max')); minv = minv || 0; maxv = maxv || Number.MAX_VALUE; return minv <= val && val <= maxv; } return true; }; this.requireChecked = function(inputObj) { var minv = parseInt(inputObj.getAttribute('min')); var maxv = parseInt(inputObj.getAttribute('max')); minv = minv || 1; maxv = maxv || Number.MAX_VALUE; var checked = 0; var groups = document.getElementsByName(inputObj.name); for (var i = 0; i < groups.length; i++) { if (groups[i].checked) checked++; } return minv <= checked && checked <= maxv; }; this.filter = function(inputObj) { var value = inputObj.value; var allow = inputObj.getAttribute('allow'); if (value.trim()) { return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, allow.split( /\s*,\s*/).join("|")), "gi").test(value); } return true; }; this.isNo = function(inputObj) { var value = inputObj.value; var noValue = inputObj.getAttribute('noValue'); return value != noValue; }; this.isTelephone = function(inputObj) { inputObj.value = inputObj.value.trim(); if (inputObj.value == '') { return true; } else { if (!RegExps.isMobile.test(inputObj.value) && !RegExps.isPhone.test(inputObj.value)) { return false; } } return true; }; this.checkReg = function(inputObj, reg, msg) { inputObj.value = inputObj.value.trim(); if (inputObj.value == '') { return true; } else { return reg.test(inputObj.value); } }; this.passed = function() { if (document.getElementById("htmlError")) $("div#htmlError").empty(); // 进入首先清除div内的提醒信息 if (this.errMsg.length > 0) { FormValid.showError(this.errMsg, this.errName, this.frm.name); if (this.errName[0].indexOf('[') == -1) { frt = document.getElementsByName(this.errName[0])[0]; if (frt.type == 'text' || frt.type == 'password') { // frt.focus(); } } return false; } else { return FormValid.succeed(); } }; this.addErrorMsg = function(name, str) { this.errMsg.push(str); this.errName.push(name); }; this.addAllName = function(name) { FormValid.allName.push(name); }; }; FormValid.allName = new Array(); FormValid.showError = function(errMsg) { var msg = ""; for (var i = 0; i < errMsg.length; i++) { msg += "- " + errMsg[i] + "\n"; } alert(msg); }; FormValid.showError = function(errMsg, name, formname) { if (typeof (formname) != 'undefined') { for (key in errMsg) { var errorid = [ "errorMsg", key ].join(""); var errorname = "formError"; var error = ' *' + errMsg[key] + '
'; $("div#htmlError").append(error); if (key == 0) { $('#' + errorid).click(); } } } }; FormValid.succeed = function() { return true; }; function checklen(inputObj) { var lenE = inputObj.value.length; var lenC = 0; var CJK = inputObj.value.match(/[\u4E00-\u9FA5\uF900-\uFA2D]/g); if (CJK != null) lenC += CJK.length; tno.innerText = inputObj.maxlength - lenC - lenE; if (tno.innerText < 0) { var tmp = 0; var cut = inputObj.value.substring(0, inputObj.maxlength); for (var i = 0; i < cut.length; i++) { tmp += /[\u4E00-\u9FA5\uF900-\uFA2D]/.test(cut.charAt(i)) ? 2 : 1; if (tmp > inputObj.maxlength) break; } inputObj.value = cut.substring(0, i); } } function goNextText(field, event) { var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; if (keyCode == 13) { var i; for (i = 0; i < field.form.elements.length; i++) if (field == field.form.elements[i]) break; i = (i + 1) % field.form.elements.length; field.form.elements[i].focus(); return false; } else { return true; } } function pitchOn(id, frm) { document.body.focus(); var pitch = document.getElementById(id); var i = pitch.innerHTML.substring(1, pitch.innerHTML.length); var text = frm.elements; var dealId = ""; var dealName = ""; for (var x = 0; x < text.length; x++) { if (text[x].getAttribute("errmsg") != undefined) { var array = text[x].getAttribute("errmsg").split('|'); if (array.length > 0) { for (var j = 0; j < array.length; j++) { if (array[j] == i) { if (frm.elements[x].id != 'undefined') dealId = frm.elements[x].id; if (frm.elements[x].name != 'undefined') dealName = frm.elements[x].name; } } } } } if (dealId != "") { if (document.getElementById(dealId).type != "hidden") { document.getElementById(dealId).focus(); } } if (dealId == "" && dealName != "") { if (dealName != "") { document.getElementsByName(dealName)[0].focus(); } } } function validator(frm) { var formElements = frm.elements; var fv = new FormValid(frm); FormValid.allName = new Array(); for (var i = 0; i < formElements.length; i++) { if (formElements[i].disabled == true) continue; var msgs = fvCheck(formElements[i], fv, formElements); if (msgs.length > 0) { for (n in msgs) { fv.addErrorMsg(formElements[i].name, msgs[n]); } } } return fv.passed(); } function fvCheck(e, fv, formElements) { var validType = e.getAttribute('valid'); var errorMsg = e.getAttribute('errmsg'); if (!errorMsg) { errorMsg = ''; } if (validType == null) return []; fv.addAllName(e.name); var vts = validType.split('|'); var ems = errorMsg.split('|'); var r = []; for (var j = 0; j < vts.length; j++) { var curValidType = vts[j]; var curErrorMsg = ems[j]; var validResult; switch (curValidType) { case 'isAreaCode': // 验证区号 case 'isPositive': // 验证是否是正数 case 'isPosInt': // 验证是否是正整数 case 'isNumber': case 'isEmail': case 'isPhone': case 'isMobile': case 'isIdCard': case 'isMoney': case 'isZip': case 'isQQ': case 'isInt': case 'isEnglish': case 'isChinese': case 'isUrl': case 'isDate': case 'isDateOnlyYandM': case 'isTime': case 'isTwoPointInt': case 'isPostcode': case 'isNotNegativeFloat': case 'isNotNegativeInt': validResult = fv.checkReg(e, RegExps[curValidType], curErrorMsg); break; case 'regexp': validResult = fv.checkReg(e, new RegExp(e.getAttribute('regexp'), "g"), curErrorMsg); break; case 'custom': validResult = eval(e.getAttribute('custom') + '(e,formElements)'); break; default: validResult = eval('fv.' + curValidType + '(e,formElements)'); break; } if (!validResult) r.push(curErrorMsg); } return r; } String.prototype.trim = function() { return this.replace(/^\s*|\s*$/g, ""); }; var RegExps = function() { }; RegExps.isAreaCode = /0\d{2,3}/; RegExps.isNumber = /^[-\+]?\d+(\.\d+)?$/; RegExps.isEmail = /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/; //RegExps.isPhone = /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/; RegExps.isPhone = /^(\d{4}[-]?)?\d{8}$/; RegExps.isMobile = /^1[0-9][0-9]\d{8}$/; RegExps.isIdCard = /(^\d{15}$)|(^\d{17}[0-9Xx]$)/; RegExps.isMoney = /^\d+(\.\d+)?$/; RegExps.isZip = /^[1-9]\d{5}$/; RegExps.isQQ = /^[1-9]\d{4,10}$/; RegExps.isInt = /^[-\+]?\d+$/; RegExps.isEnglish = /^[A-Za-z]+$/; RegExps.isChinese = /^[\u0391-\uFFE5]+$/; RegExps.isUrl = /^http[s]?:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/; RegExps.isDate = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29))$/; RegExps.isTime = /^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}$/; RegExps.isDateOnlyYandM = /(^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29))$)|(^([0-9]{4}(\-){1}(([0]?[1-9]{1})|([1-9]{1})|([1]{1}[0-2]{1})))$)/; RegExps.isTwoPointInt = /^\d+(\.\d{1,2})?$/; RegExps.isPositive = /^(0|([1-9]\d*))(\.\d+)?$/; RegExps.isPosInt = /^[0-9]*[1-9][0-9]*$/; RegExps.isPostcode = /^[1-9][0-9]{5}$/; RegExps.isNotNegativeFloat = /^\d+(\.\d+)?$/; //匹配非负浮点数(正浮点数 + 0) RegExps.isNotNegativeInt = /^\d+$/; //匹配非负整数(正整数 + 0) function isEmail(s) { if (s.length > 100) return false; var regu = "^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*[_.0-9a-zA-Z]+))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|NET|com|COM|gov|GOV|mil|MIL|org|ORG|edu|EDU|int|INT)$"; var re = new RegExp(regu); if (s.search(re) != -1) return true; else return false; } // 验证只能输入数字 function KeyPress(objTR) { var key = event.keyCode; if ((key < 48 || key > 57)) { event.keyCode = 0; } } // 限制只能输入数字和"-","." function numKeyPress(objTR) { var key = event.keyCode; if (!(((key >= 48) && (key <= 57)) || (key == 13) || (key == 46) || (key == 45))) { event.keyCode = 0; } } // 限制只能输入数字和一个"." function onlyNumAndDot(obj) { var textval = obj.value; var key = event.keyCode; if (!(((key >= 48) && (key <= 57)) || (key == 46))) { event.keyCode = 0; } else { if (!((key >= 48) && (key <= 57)) && textval.indexOf(".") > -1) { event.keyCode = 0; } } } function doKeypress(obj) { maxLength = obj.maxlength; if (!isNaN(maxLength)) { maxLength = parseInt(maxLength); var oTR = obj.document.selection.createRange(); if (oTR.text.length >= 1) event.returnValue = true; else if (obj.value.length > maxLength - 1) event.returnValue = false; } } function doKeydown(obj) { maxLength = obj.maxlength; setTimeout( function() { maxLength = parseInt(maxLength); if (!isNaN(maxLength)) { if (obj.value.length > maxLength - 1) { var oTR = window.document.selection.createRange(); oTR.moveStart("character", -1 * (obj.value.length - maxLength)); oTR.text = ""; } } }, 1); } function doBeforePaste(obj) { maxLength = obj.maxlength; if (!isNaN(maxLength)) event.returnValue = false; } function doPaste(obj) { maxLength = obj.maxlength; if (!isNaN(maxLength)) { event.returnValue = false; maxLength = parseInt(maxLength); var oTR = obj.document.selection.createRange(); var iInsertLength = maxLength - obj.value.length + oTR.text.length; var sData = window.clipboardData.getData("Text").substr(0, iInsertLength); oTR.text = sData; } } function checkESC(va) { var variable = va; var str = variable; if (variable.indexOf("<") > 0) { str = variable.replace(/\") > 0) { str = variable.replace(/\>/g, ">"); } if (variable.indexOf("&") > 0) { str = variable.replace(/\&/g, "&"); } if (variable.indexOf("\"") > 0) { str = variable.replace(/\"/g, """); } if (variable.indexOf("\'") > 0) { str = variable.replace(/\'/g, "´"); } return str; } /** * 检查message的长度是否超过total,若超过,则截取并返回message的0~total的字串 * * @param message * @param total */ function countTextAreaLength(message, total) { var max; max = total; if (message.value.length > max) { message.value = message.value.substring(0, max); } }