var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
//此文件提供WEB应用程序中常用的javascript方法。
////////////////////////////////////////////////////////////////////////////////
/*
*--------------- 客户端表单通用验证CheckForm(oForm) -----------------
* 功能:通用验证所有的表单元素.
* 使用:
* <form name="form1" onsubmit="return CheckForm(this)">
* <input type="text" name="id" check="^/S+___FCKpd___0quot; warning="id不能为空,且不能含有空格">
* <input type="submit">
* </form>
* author:wanghr100(灰豆宝宝.net)
* email:wanghr100@126.com
* update:19:28 2004-8-23
* 注意:写正则表达式时一定要小心.不要让"有心人"有空子钻.
* 已实现功能:
* 对text,password,hidden,file,textarea,select,radio,checkbox进行合法性验证
* 待实现功能:把正则表式写成个库.
*--------------- 客户端表单通用验证CheckForm(oForm) -----------------
*/
////////////////////////////////////////////////////////////////////////////////
//主函数
function CheckForm(oForm)
{
var els = oForm.elements;
//遍历所有表元素
for(var i=0;i<els.length;i++)
{
//是否需要验证
if(els[i].check)
{
//取得验证的正则字符串
var sReg = els[i].check;
//取得表单的值,用通用取值函数
var sVal = GetValue(els[i]);
//字符串->正则表达式,不区分大小写
var reg = new RegExp(sReg,"i");
if(!reg.test(sVal))
{
//验证不通过,弹出提示warning
alert(els[i].warning);
//该表单元素取得焦点,用通用返回函数
GoBack(els[i])
return false;
}
}
}
}
//通用取值函数分三类进行取值
//文本输入框,直接取值el.value
//单多选,遍历所有选项取得被选中的个数返回结果"00"表示选中两个
//单多下拉菜单,遍历所有选项取得被选中的个数返回结果"0"表示选中一个
function GetValue(el)
{
//取得表单元素的类型
var sType = el.type;
switch(sType)
{
case "text":
case "hidden":
case "password":
case "file":
case "textarea": return el.value;
case "checkbox":
case "radio": return GetValueChoose(el);
case "select-one":
case "select-multiple": return GetValueSel(el);
}
//取得radio,checkbox的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
function GetValueChoose(el)
{
var sValue = "";
//取得第一个元素的name,搜索这个元素组
var tmpels = document.getElementsByName(el.name);
for(var i=0;i<tmpels.length;i++)
{
if(tmpels[i].checked)
{
sValue += "0";
}
}
return sValue;
}
//取得select的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
function GetValueSel(el)
{
var sValue = "";
for(var i=0;i<el.options.length;i++)
{
//单选下拉框提示选项设置为value=""
if(el.options[i].selected && el.options[i].value!="")
{
sValue += "0";
}
}
return sValue;
}
}
//通用返回函数,验证没通过返回的效果.分三类进行取值
//文本输入框,光标定位在文本输入框的末尾
//单多选,第一选项取得焦点
//单多下拉菜单,取得焦点
function GoBack(el)
{
//取得表单元素的类型
var sType = el.type;
switch(sType)
{
case "text":
case "hidden":
case "password":
case "file":
case "textarea": el.focus();var rng = el.createTextRange(); rng.collapse(false); rng.select();
case "checkbox":
case "radio": var els = document.getElementsByName(el.name);els[0].focus();
case "select-one":
case "select-multiple":el.focus();
}
}
//检测所有控件输入值的合法性
function checkAll(v_frm) {
//var p_frm = document.forms[getNetuiTagName(v_frm)];
var p_frm = v_frm;
var eCount = p_frm.elements.length;
var v="";
var element_type = "";//控件类型,只针对下拉框
var discript = "";//输入值名称
var nullflag = "1";//是否可为空值,0-不可,1-可
var v_type = "s";//输入值类型,s-字符串, i-整数,f-浮点数,d-日期,e-邮件,c-身份证,p-邮编,phone -电话号码,m -移动电话,ip - ip地址,t - 短时间
var length = "";//输入值长度
var mins = "";//最小输入值
var maxs = "";//最大输入值
for(var i = 0; i < eCount; i++) {
element_type = "";
discript = "";
v_type = "s";
length = "";
nullflag = "1";
maxs = "";
mins = "";
var e=p_frm.elements[i];
if (e.style.behavior == null || e.style.behavior == "")
continue;
parseTag(e.style.behavior);
if (( v = getNextValue()) != null) {
element_type = v;
}
if (( v = getNextValue()) != null) {
discript = v;
}
if ((v = getNextValue()) != null) {
nullflag = v;
}
if ((v = getNextValue()) != null) {
v_type = v;
}
if ((v = getNextValue()) != null) {
length = v;
}
if ((v = getNextValue()) != null) {
mins = eval(v);
}
if ((v = getNextValue()) != null) {
maxs = eval(v);
}
if (checkValidate(element_type,e, discript, v_type, length, nullflag, maxs, mins) == "0")
return false;
}
return true;
}
//判断是否是纯空格字符串
function isSpaceStr(str) {
var e;
var result = false;
for(var i=0;i<str.length;i++)
{
e = str.charAt(i);
if(e != " ")
{
result = true;
break;
}
}
return result;
}
//判断是否是纯回车
function isEnter(str)
{
var len=str.length;
if(len<1) return false;
for(var i=0;i<len;i++){
str=str.replace("/n"," ");
str=str.replace("/r"," ");
if(str.substring(i,i+1)!=" "){
return true;
}
}
return false;
}
/**
* 检验用户指定的对象是否合法
* @param element 用户需要校验的对象
* @param discript 对象的描述
* @param type 对象的类型:
* i 整数
* f 浮点
* s 字符
* d 日期
* e 邮件
* c 身份证
* p 邮编
* @param length 对象的最大长度
* @param type 能否为空:
* 1 可以为空
* 0 不能为空
* @param maxs 最大值
* @param mins 最小值
* @return 全部条件合法返回true;否则返回false
*/
function checkValidate(element_type,element, discript, type, length, nullflag, maxs, mins) {
if (element == "") {
window.alert("函数调用出错,请输入控件!")
return(0);
}
if (discript == "") {
window.alert("函数调用出错,请输入控件描述!")
return(0);
}
if (nullflag == 0) {
if (element_type == "select") {
if ( element.style.display=="block" || element.style.display=="") {
if (element.value == "0") {
window.alert("请选择" + discript + "!");
element.focus();
return(0);
}
}
} else {
if (element.value == "" || !isSpaceStr(element.value) || !isEnter(element.value)) {
window.alert("请输入" + discript + "!");
element.focus();
return(0);
}
}
}else
{
if(element.value=="")
return(1);
}
if (type != "") {
switch (type) {
case "i"://整数
{
if (element.value.length != 0 && isInteger(element.value) != true) {
window.alert(discript + "必须输入整数!")
element.focus();
return(0);
}else if (element.value.length == 0 ){
//element.value = "0" ;
}
break;
}
case "f"://浮点数
{
if (element.value.length != 0 && isNaN(element.value) == true) {
window.alert(discript + "必须输入数字!")
element.focus();
return(0);
} if (element.value.length == 0 ){
//element.value = "0" ;
}
break;
}
case "s"://字符串
{
break;
}
case "d"://日期
{
if (element.value.length != 0 && isDate(element.value) == false) {
window.alert(discript + "必须输入有效日期!(日期格式:yyyy-mm-dd)")
element.focus();
return(0);
}
break;
}
case "e"://邮件
{
if (element.value.length != 0 && isEmail(element.value) == false) {
window.alert("请输入有效的" + discript + "!")
element.focus();
return(0);
}
break;
}
case "c"://身份证
{
if (element.value.length != 0 && cidInfo(element.value) == false) {
window.alert("请输入有效的" + discript + "!")
element.focus();
return(0);
}
break;
}
case "p"://邮编
{
if (element.value.length != 0 && isPostCode(element.value) == false) {
window.alert("请输入有效的" + discript + "!")
element.focus();
return(0);
}
break;
}
case "m"://移动电话
{
if (element.value.length != 0 && isMoveTel(element.value) == false) {
window.alert("请输入有效的" + discript + "!")
element.focus();
return(0);
}
break;
}
case "ip"://ip地址
{
if (element.value.length != 0 && isIP3(element.value) == false) {
window.alert("请输入有效的" + discript + "!")
element.focus();
return(0);
}
break;
}
case "t"://短时间 (13:04:15)
{
if (element.value.length != 0 && isShortTime(element.value) == false) {
window.alert("请输入有效的" + discript + "!")
element.focus();
return(0);
}
break;
}
case "hour"://小时
{
if (element.value.length != 0 && isHoutTime(element.value) == false) {
window.alert("请输入有效的" + discript + "格式!")
element.focus();
return(0);
}
break;
}
case "minute"://分钟
{
if (element.value.length != 0 && isMinuteTime(element.value) == false) {
window.alert("请输入有效的" + discript + "格式!")
element.focus();
return(0);
}
break;
}
case "phone"://电话号码
{
if (element.value.length != 0 && PhonesCheck(element.value) == false) {
window.alert("请输入有效的" + discript + "!")
element.focus();
return(0);
}
break;
}
case "quhao"://电话号码(区号+电话)
{
if (element.value.length != 0 && PhonesQHCheck(element.value) == false) {
window.alert("请输入有效的" + discript + "! (格式:区号-电话)")
element.focus();
return(0);
}
break;
}
case "simpleP"://简单电话号码(数字,'(',')','-')
{
if (element.value.length != 0 && SimplePhone(element.value) == false) {
window.alert("请输入有效的" + discript + "!")
element.focus();
return(0);
}
break;
}
}
}
if (length != "" && type != "d") {
if (lengthCheck(element.value, length)) {
window.alert(discript + "的长度必须小于" + length/2 + "个汉字!" + length + "个字符!");
element.focus();
return(0);
}
}
if (maxs != "" && mins != "")
{
if(type =="s")
{
if (lenInFact(element)<mins || lenInFact(element)>maxs)
{
window.alert(discript + "的长度必须小于" + maxs/2 + "个汉字!" + maxs + "个字符, 大于" + mins/2 + "个汉字!" + mins + "个字符!");
element.focus();
return(0);
}
}
else
{
if (element.value < mins || element.value > maxs)
{
window.alert(discript + "的值必须小于" + maxs + ", 大于" + mins + "!");
element.focus();
return(0);
}
}
}
else
{
if (maxs != "")
{
if(type =="s")
{
if (lenInFact(element)> maxs)
{
window.alert(discript + "的长度必须小于" + maxs/2 + "个汉字" + maxs + "个字符!");
element.focus();
return(0);
}
}
else
{
if (element.value > maxs)
{
window.alert(discript + "的值必须小于" + maxs + "!");
element.focus();
return(0);
}
}
}
if (mins != "")
{
if(type =="s")
{
if (lenInFact(element) < mins)
{
window.alert(discript + "的长度必须大于" +mins/2 + "个汉字" + mins + "个字符!");
element.focus();
return(0);
}
}
else
{
if (element.value < mins)
{
window.alert(discript + "的值必须大于" + mins + "!");
element.focus();
return(0);
}
}
}
}
return(1);
}
//电话号码的验证
//要求:
//(1)电话号码由数字、"("、")"和"-"构成
//(2)电话号码为3到8位
//(3)如果电话号码中包含有区号,那么区号为三位或四位
//(4)区号用"("、")"或"-"和其他部分隔开
//(5)移动电话号码为11或12位,如果为12位,那么第一位为0
//(6)11位移动电话号码的第一位和第二位为"13"
//(7)12位移动电话号码的第二位和第三位为"13"
//根据这几条规则,可以与出以下正则表达式:
//(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)
function PhoneCheck(s) {
var str=s;
var reg=/(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
//var reg=/(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}1[3,5][0-9]{9}$)/
if(reg.test(str)){
return true;
}
else{
return false;
}
}
function PhonesCheck(s) {
var str=s;
var reg=/(^(/([/d]{3,4}/)|[/d]{3,4}/-){0,1}[/d]{3,8}(/([/d]{1,4}/)|/-[/d]{1,4}){0,1}$)|(^0{0,1}13[/d]{9}$)|(^0{0,1}159[/d]{8}$)/;
//var reg=/(^(/([/d]{3,4}/)|[/d]{3,4}/-){0,1}[/d]{3,8}(/([/d]{1,4}/)|/-[/d]{1,4}){0,1}$)|(^0{0,1}1[3,5][/d]{9}$)/;
if(reg.test(str)){
return true;
}
else{
return false;
}
}
function PhonesQHCheck(s) {
var str=s;
var reg=/(^[0-9]{3,4}/-[0-9]{3,8}$)/
if(reg.test(str)){
return true;
}
else{
return false;
}
}
function SimplePhone(str){
var count;
var numflag;
for(count = 0; count < str.length; count++){
numchar = str.charAt(count);
numflag = 0;
if(numchar == "(" || numchar == ")" || numchar == "-" ){
numflag = 1;
}else{
numvalue = numchar - '0';
if (numvalue >= 0 && numvalue <= 9){
numflag = 1;
}
}
if(numflag == 0){
return false;
}
}
return true;
}
//移动电话(手机)
//样式:13531214732或013531214732
function isMoveTel(elem){
var pattern=/(^0{0,1}13[0-9]{9}$)|(^0{0,1}159[/d]{8}$)/;
if(pattern.test(elem)){
return true;
}else{
//elert("电话号码不正确");
return false;
}
}
//验证IP地址
function isIP3(elem){
var pattern=/(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])/;
if(pattern.test(elem)){
return true;
}else{
//alert("ip格式不正确");
return false;
}
}
//短时间(形如: 13:04:06)
//更具弹性的正则表达式:/^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2})$/
function isShortTime(elem){
var pattern=/^([0-9]{1,2})(:)([0-9]{1,2})(:)([0-9]{1,2})$/;
var temp=elem.match(pattern);
if(temp==null)
return false;
if(temp[1]>=24)
return false;
if(temp[3]>=60)
return false;
if(temp[5]>=60)
return false;
return true;
}
function isHoutTime(elem){
var pattern=/^([0-9]{1,2})$/;
var temp=elem.match(pattern);
if(temp==null)
return false;
if(temp[1]>=24)
return false;
return true;
}
function isMinuteTime(elem){
var pattern=/^([0-9]{1,2})$/;
var temp=elem.match(pattern);
if(temp==null)
return false;
if(temp[1]>=60)
return false;
return true;
}
//判断是否整数
function isInteger(integer) {
var count;
var numchar;
var numvalue;
for (count = 0; count < integer.length; count++) {
numchar = integer.charAt(count);
numvalue = numchar - '0';
if (!(numvalue >= 0 && numvalue <= 9))
return false;
}
return true;
}
//判断是否有效邮件
function isEmail(mail) {
if (killSpace(mail) == "") return false;
var v_email = mail.substring(mail.indexOf("@") + 1)
if ( (mail.indexOf("@") == -1) ||
(mail.indexOf("@") == 0) ||
(mail.indexOf("@") != mail.lastIndexOf("@")) ||
(v_email.indexOf(".") == -1) ||
(v_email.indexOf(".") == 0) ||
((mail.indexOf(".") + 1) == mail.length) ) {
return false;
}
return true;
}
//身份证简单验证,单纯的位数验证
function isIdCard(idcard){
var re = /^[/d]{15}|[/d]{18}|[/d]{17}[Xx]$/;
if(re.test(idcard)){
//alert("验证通过!");
return true;
}
else{
//alert("身份证号码错误!");
return false;
}
}
//身份证严格验证,包括地区验证、生日验证和校验位验证
//18位公民身份证号码的编排规则:
//身份号码是特征组合码,由十七位数字本体码和一位校验码组成。
//排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。其含义如下:
//1. 地址码:表示编码对象常住户口所在县(市、旗、区)的行政区划代码。(本函数只对省级地区进行检验)
//2. 出生日期码:表示编码对象出生的年、月、日,年、月、日分别用4位、2位、2位数字表示,之间不用分隔符。(出生日期合法性检验)
//3. 顺序码:表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
//校验的计算方式:
// 1. 对前17位数字本体码加权求和
// 公式为:S = Sum(Ai * Wi), i = 0, ... , 16
// 其中Ai表示第i位置上的身份证号码数字值,Wi表示第i位置上的加权因子,其各位对应的值依次为: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
// 2. 以11对计算结果取模
// Y = mod(S, 11)
// 3. 根据模的值得到对应的校验码
// 对应关系为:
// Y值: 0 1 2 3 4 5 6 7 8 9 10
// 校验码: 1 0 X 9 8 7 6 5 4 3 2
function cidInfo(idcard){
var Errors = new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证地区非法!");
var area = {11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
var idcard,Y,JYM;
var S,M;
var idcard_array = new Array();
idcard_array = idcard.split("");
//地区检验
if(area[parseInt(idcard.substr(0,2))]==null) {
//alert(Errors[4]);
return false;
}
//身份号码位数、出生日期的合法性检查及格式检验
switch(idcard.length){
case 15:
//15位身份号码检测
if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//闰年出生日期的合法性正则表达式
}
else {
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//平年出生日期的合法性正则表达式
}
if(ereg.test(idcard)){
//alert(Errors[0]);
return true;
}
else{
//alert(Errors[2]);
return false;
}
break;
case 18:
//18位身份号码检测
if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
}
else {
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
}
//测试出生日期的合法性
if(ereg.test(idcard)){
//计算校验位
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3 ;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y,1);
//判断校验位
if(M == idcard_array[17].toUpperCase()){
//alert(Errors[0]);
return true;
}
else{
//alert(Errors[3]);
return false;
}
}
else{
//alert(Errors[2]);
return false;
}
break;
default:
//alert(Errors[1]);
return false;
break;
}
}
//判断是否为邮编
function isPostCode(postCode) {
var v_postCode = killSpace(postCode);
if (v_postCode == "") return false;
if (v_postCode.length != 6) {
//alert("邮政编码必须为6位数字!");
return false;
}
if (!isInteger(v_postCode)) {
//alert("邮政编码必须全部为数字!");
return false;
}else {
return true;
}
}
/**
* 调用此函数校验日期。
* @param s 输入日期string s,如2001-01-01
* @return 若输入的日期没有包含非法字符,以及该日期合法,则返回true;否则返回false
*/
function isDate(s) {
if (s.length != 10 || (s.charAt(4) != '-' && s.charAt(4) != '/') || (s.charAt(7) != '-' && s.charAt(7) != '/'))
return false;
if (!isInteger(s.substring(0, 4)) || !isInteger(s.substring(5, 7)) || !isInteger(s.substring(8, 10)) || eval(s.substring(0, 4)) < 1 || eval(s.substring(5, 7)) < 1 || eval(s.substring(8, 10)) < 1)
return false;
if (checkDate(s.substring(0, 4), s.substring(5, 7), s.substring(8, 10)) == false)
return false;
return true;
}
//检验日期是否合法
function checkDate(year, month, day) {
var iyear;
var imonth;
var iday;
if(year.length != 4 || month.length != 2 || day.length != 2)
return false;
if (!isInteger(year) || !isInteger(month) || !isInteger(day))
return false;
iyear = getValueOfInt(year);
imonth = getValueOfInt(month);
iday = getValueOfInt(day);
if (imonth < 1 || imonth > 12) return false;
switch(imonth) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (iday > 31) return false;
break;
case 4:
case 6:
case 9:
case 11:
if (iday > 30) return false;
break;
default:
if(mod(iyear, 4) == 0 && (mod(iyear, 100) != 0 || mod(iyear, 400) == 0)) {//判断是否润年
if (iday > 29) return false;
}else {
if (iday > 28) return false;
}
}
return true;
}
//取得输入字符串所代表的整数值
function getValueOfInt(string) {
var count;
var numchar;
var numvalue;
var value;
value = 0;
for ( count = 0; count < string.length; count++) {
numchar = string.charAt(count);
numvalue = numchar - '0';
value = value * 10 + numvalue;
}
return value;
}
var e_tag; //当前正在分拆得Tag值
//开始解析分拆Tag值
function parseTag(p_tag) {
e_tag = p_tag.substring (p_tag.indexOf("'")+1,p_tag.lastIndexOf ("'"));
}
//得到下一个分拆处理的值
function getNextValue() {
if(e_tag == null || e_tag == "")
return null;
var p = e_tag.indexOf("|");
if(p == -1)
p = e_tag.length;
var r = e_tag.substring(0,p);
e_tag = e_tag.substring(p + 1, e_tag.length);
return r;
}
//删除空格处理,供checkValidate调用
function killSpace(x) {
while ((x.length > 0) && (x.charAt(0) == ' '))
x = x.substring(1, x.length)
while ((x.length > 0) && (x.charAt(x.length - 1) == ' '))
x = x.substring(0, x.length - 1)
return x;
}
//计算中文长度
function count_char(str) {
var len = 0;
for(i = 0; i < str.length; i++) {
var ech = escape(str.charAt(i));
if ( ech.length > 4 ){
// len++;
//// 修改下面的数字,len + 1 表示2个字符代表一个中文字,len + 5 表示6个字符代表一个中文字
len = len + 1;
/*
if (ech>"%u07ff")
len++;
*/
}
len ++;
}
return len;
}
//检查输入的内容是否超过指定的长度
function lengthCheck(text, size) {
var len = count_char(text);
if ( len > size ) {
return true;
}
return false;
}
function mod(var1,var2) {
return (var1%var2);
}
function getNetuiTagName(id) {
return netui_names[id];
}
function getNetuiTagName(id, tag)
{
var scopeId = getScopeId(tag);
if (scopeId == "")
return netui_names[id];
else
return netui_names[scopeId + "__" + id];
}
function getScopeId(tag)
{
if (tag == null)
return "";
if (tag.scopeId != null)
return tag.scopeId;
return getScopeId(tag.parentElement);
}
function disableAllButton(p_frm) {
var eCount = p_frm.elements.length;
for(var i = 0; i < eCount; i++) {
var e=p_frm.elements[i];
if (e.type=="button" || e.type=="submit"){
e.disabled=true;
}
}
return true;
}
function checkNumber(obj,num){ //过滤掉数字以外的键,48-57是数字键,46是".",num是小数点后几位
if (event.keyCode==46){
if (obj.value.length<=0){ //如果第一个键是".",屏蔽掉
event.keyCode=0;
return;
}//end if
else {
for (var n=0;n<obj.value.length;n++){ //如果"."过多,屏蔽掉
if (obj.value.substring(n,n+1)=="."){
event.keyCode=0;
return;
}//end if
}//end for n
return ;
}//end else
}//end if
if (event.keyCode<48 || event.keyCode>57){ //过滤其他键
event.keyCode=0;
return;
}
else{ //控制小数点后位数
for (var n=0;n<obj.value.length;n++){
if (obj.value.substring(n,n+1)=="."){
if ((obj.value.length-n)>num){
event.keyCode=0;
return;
}//end if
}//end if
}//end for n
}
}
function checkBer(obj,num){ //控制字符输入长度
for (var n=0;n<obj.value.length;n++){
if ((obj.value.length-n)>=num){
event.keyCode=0;
return;
}//end if
}//end for n
}
function lenInFact(obj,maxLen)
{
var c;var len=0;var j=0;
for(var i=0;i<obj.value.length;i++)
{
c=escape(obj.value.charAt(i));
if(c.length>4)
{
len=len+2;
}
else
{
len++;
}
if(len>maxLen)
{
j=i-1;
break;
}
}
return j;
}
function lenInFact(obj)
{
var c;
var len=0;
for(var i=0;i<obj.value.length;i++)
{
c=escape(obj.value.charAt(i));
if(c.length>4)
{
len=len+2;
}
else
{
len++;
}
}
return len;
}
//区间日期检查
function checkdate(date1,date2)
{
if(date1.value != "" && date2.value !="" && date1.value > date2.value)
{
alert("起始时间应小于或等于截止时间!");
return false;
}
return true;
}
function checkTextLength(obj,num){ //控制TextArea输入长度
//alert(obj.value.length);
var maxLen=lenInFact(obj,num);
//alert(maxLen);
if(maxLen!=0)
{
obj.value=obj.value.substring(0,maxLen);
}
}
function checkMaxInput(form,maxLen,message,remLen) {
if (form.message.value.length > maxLen)
form.message.value = form.message.value.substring(0, maxLen);
else form.remLen.value = maxLen - form.message.value.length;
}
function checkInput(message,maxLen) {
if (message.value.length > maxLen) // if too long.... trim it!
message.value = message.value.substring(0, maxLen);
// otherwise, update 'characters left' counter
//else remLen.value = maxLen - message.value.length;
}
function checkMaxInput2(message,maxLen,remLen) {
if (message.value.length > maxLen)
message.value = message.value.substring(0, maxLen);
else remLen.value = maxLen - message.value.length;
}
//检查时间范围
function checkDateRange(y1,y2)
{
d1 = getStringToDate(y1.value);
d2 = getStringToDate(y2.value);
d1m = d1.getTime();
d2m = d2.getTime();
if( d1m > d2m )
{
alert("起始时间不能大于终止时间,请重新输入!");
y1.value = "";
y2.value = "";
y1.focus();
return false;
}
return true;
}
function getStringToDate(y1)
{
year1 = y1.substring(0,y1.indexOf('-'));
tmpY1 = y1.substring(y1.indexOf('-') + 1,y1.length);
month1 = tmpY1.substring(0,tmpY1.indexOf('-'));
day1 = tmpY1.substring(tmpY1.indexOf('-') + 1, tmpY1.length);
return new Date(year1, month1, day1, 0, 0, 0, 0);
}
function processSubmit(obj){
obj.disabled=true;
if(checkAll(obj.form)){
obj.form.submit();
}else {
obj.disabled=false;
}
}
一个不错的 js 校验
本文转载:CSDN博客