//################################################################### //关于验证输入有效性 //################################################################### //得到文章属性内容 function getattribute(input) { //controltype.checkboxlist if ($("input[type='checkbox'][name='" + input + "']").length !== 0) { return getcheckvalues($("input[type='checkbox'][name='" + input + "']:checked")); } //controltype.radiolist else if ($("input[type='radio'][name='" + input + "']").length !== 0) { return $("input[type='radio'][name='" + input + "']:checked").val(); } //controltype.loadfile else if ($("input[id*='" + input + "_txtfilename']").length !== 0) { return $("input[id*='" + input + "_txtfilename']").val(); } else { //controltype.textbox //controltype.datetextbox //controltype.numbertextbox //controltype.dropdownlist return $("#" + input).val(); } } //得到多选框参数 function getcheckvalues(checkbox) { var s = ""; $.each(checkbox, function () { s += $(this).val() + ","; }); return s; } function checkipaddr(txt, name) { var str = $("#" + txt).val(); if (str == "") { alert(name + "不能为空!"); return false; } re = /(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配ip地址的正则表达式 if (re.test(str)) { if (regexp.$1 * math.pow(255, 3) + regexp.$2 * math.pow(255, 2) + regexp.$3 * 255 + regexp.$4 * 1) { return true; } else { alert(name + "格式不正确!"); return false; } } else { alert(name + "格式不正确!"); return false; } } function islength(txt, name, len) { var str = $("#" + txt).val(); if (str.length > len) { alert(name + "输入字数不能大于" + len + "字!"); return false; } else { return true; } } function islengthshort(txt, name, len) { var str = $("#" + txt).val(); if (str.length < len) { alert(name + "输入字数不能小于" + len + "字!"); return false; } else { return true; } } //不能为空 function isnotnull(txt, name) { var str = $("#" + txt).val(); while (str.indexof(" ") != -1) { str = str.replace(" ", ""); } if (str == "") { alert(name); return false; } else { return true; } } //不能为空 function ischecknotnull(txt) { var str = $("#" + txt).val(); while (str.indexof(" ") != -1) { str = str.replace(" ", ""); } if (str == "") { return false; } else { return true; } } //输入数字 function isnumber(txt, name) { var str = $("#" + txt).val(); var pattern = /^[0-9]*$/; if (str != "" && (!pattern.exec(str))) { alert(name + "请输入数字!"); return false; } else { return true; } } //浮点数字 function isdouble(txt, name) { var str = $("#" + txt).val(); var pattern = /^[0-9.]*[0-9.][0-9.]*$/; if (str != "" && (!pattern.exec(str))) { alert(name + "请输入浮点数字!"); return false; } else { return true; } } //js比较日期大小 function isstartenddate(start, startname, end, endname) { var sdate = $("#" + start).val(); var edate = $("#" + end).val(); if (date.parse(sdate.replace("-", "/")) > date.parse(edate.replace("-", "/"))) { alert(startname + "要小于或等于" + endname); return false; } else { return true; } } //js比较日期大小 function isstartendtime(start, startname, end, endname) { var sdate = $("#" + start).val(); var edate = $("#" + end).val(); if (parsefloat(sdate.replace(":", ".")) >= parsefloat(edate.replace(":", "."))) { alert(startname + "要小于" + endname); return false; } else { return true; } } //校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-” function istel(txt, name) { var str = $("#" + txt).val(); var pattern = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/; if (str != "" && (!pattern.exec(str))) { alert(name + "请输入正确的电话号码!"); return false; } else { return true; } } function isusername(txt, name) { var str = $("#" + txt).val(); var pattern = /^([\ue7c7-\ue7f3]|[\w])*$/; if (str != "" && (!pattern.exec(str))) { alert(name + "请输入英文和数字!"); return false; } else { return true; } } //邮件 function isemail(txt, name) { var str = $("#" + txt).val(); var pattern = /^[a-za-z0-9_\-]{1,}@[a-za-z0-9_\-]{1,}\.[a-za-z0-9_\-.]{1,}$/; if (str != "" && (!pattern.exec(str))) { alert(name + "请输入正确的邮箱地址!"); return false; } else { return true; } } //校验手机号码:必须以数字开头,除数字外,可含有“-” function ismobile(txt, name) { var str = $("#" + txt).val(); var reg0 = /^13\d{9}$/; var reg1 = /^15\d{9}$/; var reg2 = /^18\d{9}$/; var reg3 = /^1\d{10}$/; var my = false; if (reg0.test(str)) my = true; if (reg1.test(str)) my = true; if (reg2.test(str)) my = true; if (reg3.test(str)) my = true; if (str != "" && (!my)) { alert(name); return false; } else { return true; } } //邮政编码 function ispostalcode(txt, name) { var str = $("#" + txt).val(); var pattern = /^[0-9]{6}$/; if (str != "" && (!pattern.exec(str))) { alert(name + "请输入正确的邮政编码!"); return false; } else { return true; } } //校验日期 function isdate(txt, name) { var str = $("#" + txt).val(); var pattern = /^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$/; if (str != "" && (!pattern.exec(str))) { alert(name + "请输入正确的日期 “yyyy-mm-dd”!"); return false; } else { if (str != "") { var year = str.substring(0, 4); if (year > "2100" || year < "1900") { alert(name + "请输入正确的年份!"); return false; } } return true; } } //校验时间 function istime(txt, name) { var str = $("#" + txt).val(); var pattern = /^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/; if (str != "" && (!pattern.exec(str))) { alert(name + "请输入正确的时间格式“09:00”!"); return false; } else { return true; } } //验证网址 function isurl(txt, name) { var str = $("#" + txt).val(); var strregex = "^(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //ftp的user@ + "(([0-9]{1,3}\.){3}[0-9]{1,3}" // ip形式的url- 199.194.52.184 + "|" // 允许ip和domain(域名) + "([0-9a-z_!~*'()-]+\.)*" // 域名- www. + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名 + "[a-z]{2,6})" // first level domain- .com or .museum + "(:[0-9]{1,4})?" // 端口- :80 + "((/?)|" // a slash isn't required if there is no file name + "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$"; var re = new regexp(strregex); if (str == "") { return true; } else { if (str != "" && re.test(str)) { return true; } else { alert(name + "请输入正确的网址 !") return false; } } } //校验身份证号 function isidnumber(txt, name) { var str = $("#" + txt).val(); if (str != "") { return isidcardno(str); } else { return true; } } //这个可以验证15位和18位的身份证,并且包含生日和校验位的验证。 //如果有兴趣,还可以加上身份证所在地的验证,就是前6位有些数字合法有些数字不合法。 function isidcardno(num) { num = num.touppercase(); //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符x。 if (!(/(^\d{15}$)|(^\d{17}([0-9]|x)$)/.test(num))) { alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或x。'); return false; } //校验位按照iso 7064:1983.mod 11-2的规定生成,x可以认为是数字10。 //下面分别分析出生日期和校验位 var len, re; len = num.length; if (len == 15) { re = new regexp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/); var arrsplit = num.match(re); //检查生日日期是否正确 var dtmbirth = new date('19' + arrsplit[2] + '/' + arrsplit[3] + '/' + arrsplit[4]); var bgoodday; bgoodday = (dtmbirth.getyear() == number(arrsplit[2])) && ((dtmbirth.getmonth() + 1) == number(arrsplit[3])) && (dtmbirth.getdate() == number(arrsplit[4])); if (!bgoodday) { alert('输入的身份证号里出生日期不对!'); return false; } else { //将15位身份证转成18位 //校验位按照iso 7064:1983.mod 11-2的规定生成,x可以认为是数字10。 var arrint = new array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrch = new array('1', '0', 'x', '9', '8', '7', '6', '5', '4', '3', '2'); var ntemp = 0, i; num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6); for (i = 0; i < 17; i++) { ntemp += num.substr(i, 1) * arrint[i]; } num += arrch[ntemp % 11]; //return num; return true; } } if (len == 18) { re = new regexp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|x)$/); var arrsplit = num.match(re); //检查生日日期是否正确 var dtmbirth = new date(arrsplit[2] + "/" + arrsplit[3] + "/" + arrsplit[4]); var bgoodday; bgoodday = (dtmbirth.getfullyear() == number(arrsplit[2])) && ((dtmbirth.getmonth() + 1) == number(arrsplit[3])) && (dtmbirth.getdate() == number(arrsplit[4])); if (!bgoodday) { alert(dtmbirth.getyear()); alert(arrsplit[2]); alert('输入的身份证号里出生日期不对!'); return false; } else { //检验18位身份证的校验码是否正确。 //校验位按照iso 7064:1983.mod 11-2的规定生成,x可以认为是数字10。 var valnum; var arrint = new array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrch = new array('1', '0', 'x', '9', '8', '7', '6', '5', '4', '3', '2'); var ntemp = 0, i; for (i = 0; i < 17; i++) { ntemp += num.substr(i, 1) * arrint[i]; } valnum = arrch[ntemp % 11]; if (valnum != num.substr(17, 1)) { alert('18位身份证的校验码不正确!应该为:' + valnum); return false; } //return num; return true; } } return false; }