js表单验证工具包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js表单验证工具包相关的知识,希望对你有一定的参考价值。
常用的js表单验证方法大全
1 /* 2 非空校验 : isNull() 3 是否是数字: isNumber(field) 4 trim函数: trim() lTrim() rTrim() 5 校验字符串是否为空: checkIsNotEmpty(str) 6 校验字符串是否为整型: checkIsInteger(str) 7 校验整型最小值: checkIntegerMinValue(str,val) 8 校验整型最大值: checkIntegerMaxValue(str,val) 9 校验整型是否为非负数: isNotNegativeInteger(str) 10 校验字符串是否为浮点型: checkIsDouble(str) 11 校验字符串是否为日期型: checkIsValidDate(str) 12 校验两个日期的先后: checkDateEarlier(strStart,strEnd) 13 校验字符串是否为email型: checkEmail(str) 14 校验字符串是否为中文: checkIsChinese(str) 15 计算字符串的长度,一个汉字两个字符: fucCheckLength() 16 判断下拉列表框是否取值: getComboValue(field) 17 校验电话号(传真号) validateTel(str) 18 校验手机号 validateMonoTel(str) 19 校验字符串由字母,数字或两者组合而成 checkIsStrNum(str) 20 验证字符串是否只由字母组合而成 checkIsChar(str) 21 验证金额,成绩等可以带小数点数字的格式 validateResult(str,num1,num2) 22 计算两个日期之间的差值 dateDiff(interval, date1, date2) 23 验证是否为,或最大长度中文两个符 isNotNull(arg1,arg2,arg3) 24 验证输入值是否是月份 isMonth(validateMonth) 25 验证输入值是否是年份 isYear(validateYear) 26 -------------------------------------------------------------------- 27 验证小数和负数 chknbr(num,opt1,opt2) 28 //opt1 小数 opt2 负数 29 //当opt1为1时检查num是否是小数 30 //当opt2为1时检查num是否是负数 31 //返回true是正确的,false是错误的 32 -------------------------------------------------------------------- 33 四舍五入函数: round(input,exact)//input 数值 exact 精确的位数 34 得到文件的后缀名: getFilePostfix(oFile) 35 */ 36 37 //================================================================= 38 //function:isNull() 39 //非空校验 40 //================================================================== 41 function isNull(aForm,fieldArray) 42 { 43 if (confirm("您确认要进行此操作吗?")) 44 { 45 for (var i=0;i<(aForm.elements.length);i++) 46 { 47 var el=aForm.elements[i]; 48 for(var j=1;j<=fieldArray.length;j++) 49 { 50 if (el.name==fieldArray[j]) 51 { 52 53 if(trim(el.value)=="") 54 { 55 56 setMessage("焦点处的值不能为空:"+fieldArray[j]+"!"); 57 el.focus(); 58 return true; 59 } 60 } 61 } 62 } 63 return false; 64 } 65 else 66 { 67 return true; 68 } 69 } 70 71 //================================================================== 72 // function isNumber(field) 73 // 判断input text 的是否是数字. 74 // return: true or false field为空返回false 75 //================================================================== 76 77 function isNumber(field){ 78 //var re = new RegExp(/^\d+.*$/); 79 var re = /^\d+(?=\.{0,1}\d+$|$)/; 80 return re.test(trim(field.value)); 81 } 82 83 84 85 function LTrim(str) 86 { 87 var whitespace = new String(" \t\n\r"); 88 var s = new String(str); 89 if (whitespace.indexOf(s.charAt(0)) != -1) 90 { 91 var j=0, i = s.length; 92 while (j < i && whitespace.indexOf(s.charAt(j)) != -1) 93 { 94 j++; 95 } 96 s = s.substring(j, i); 97 } 98 return s; 99 } 100 function RTrim(str) 101 { 102 var whitespace = new String(" \t\n\r"); 103 var s = new String(str); 104 if (whitespace.indexOf(s.charAt(s.length-1)) != -1) 105 { 106 var i = s.length - 1; 107 while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1) 108 { 109 i--; 110 } 111 s = s.substring(0, i+1); 112 } 113 return s; 114 } 115 function trim(str) 116 { 117 return RTrim(LTrim(str)); 118 } 119 120 121 122 /********************************** Empty **************************************/ 123 /** 124 *校验字符串是否为空 125 *返回值: 126 *如果不为空,定义校验通过,返回true 127 *如果为空,校验不通过,返回false 参考提示信息:输入域不能为空! 128 */ 129 function checkIsNotEmpty(str) 130 { 131 if(trim(str)== "") 132 return false; 133 else 134 return true; 135 } 136 /*--------------------------------- Empty --------------------------------------*/ 137 /********************************** Integer *************************************/ 138 /** 139 *校验字符串是否为整型 140 *返回值: 141 *如果为空,定义校验通过, 返回true 142 *如果字串全部为数字,校验通过,返回true 143 *如果校验不通过, 返回false 参考提示信息:输入域必须为数字! 144 */ 145 function checkIsInteger(str) 146 { 147 //如果为空,不通过校验 148 if(trim(str) == "") 149 return false; 150 var strr=trim(str); 151 if(new RegExp(/^(\d+)$/).test(strr)) 152 return true; 153 else 154 return false; 155 }//~~~ 156 /** 157 *校验整型最小值 158 *str:要校验的串。 val:比较的值 159 * 160 *返回值: 161 *如果为空,定义校验通过, 返回true 162 *如果满足条件,大于等于给定值,校验通过,返回true 163 *如果小于给定值, 返回false 参考提示信息:输入域不能小于给定值! 164 */ 165 function checkIntegerMinValue(str,val) 166 { 167 //如果为空,则通过校验 168 if(str == "") 169 return true; 170 if(typeof(val) != "string") 171 val = val + ""; 172 if(checkIsInteger(str) == true) 173 { 174 if(parseInt(str,10)>=parseInt(val,10)) 175 return true; 176 else 177 return false; 178 } 179 else 180 return false; 181 }//~~~ 182 /** 183 *校验整型最大值 184 *str:要校验的串。 val:比较的值 185 * 186 *返回值: 187 *如果为空,定义校验通过, 返回true 188 *如果满足条件,小于等于给定值,校验通过,返回true 189 *如果大于给定值, 返回false 参考提示信息:输入值不能大于给定值! 190 */ 191 function checkIntegerMaxValue(str,val) 192 { 193 //如果为空,则通过校验 194 if(str == "") 195 return true; 196 if(typeof(val) != "string") 197 val = val + ""; 198 if(checkIsInteger(str) == true) 199 { 200 if(parseInt(str,10)<=parseInt(val,10)) 201 return true; 202 else 203 return false; 204 } 205 else 206 return false; 207 }//~~~ 208 /** 209 *校验整型是否为非负数 210 *str:要校验的串。 211 * 212 *返回值: 213 *如果为空,定义校验通过,返回true 214 *如果非负数, 返回true 215 *如果是负数, 返回false 参考提示信息:输入值不能是负数! 216 */ 217 function isNotNegativeInteger(str) 218 { 219 //如果为空,则通过校验 220 if(str == "") 221 return true; 222 if(checkIsInteger(str) == true) 223 { 224 if(parseInt(str,10) < 0) 225 return false; 226 else 227 return true; 228 } 229 else 230 return false; 231 }//~~~ 232 /*--------------------------------- Integer --------------------------------------*/ 233 /********************************** Double ****************************************/ 234 /** 235 *校验字符串是否为浮点型 236 *返回值: 237 *如果为空,定义校验通过, 返回true 238 *如果字串为浮点型,校验通过, 返回true 239 *如果校验不通过, 返回false 参考提示信息:输入域不是合法的浮点数! 240 */ 241 function checkIsDouble(str) 242 { 243 //如果为空,则通过校验 244 if(trim(str) == "") 245 return true; 246 //如果是整数,则校验整数的有效性 247 if(str.indexOf(".") == -1) 248 { 249 if(checkIsInteger(str) == true) 250 return true; 251 else 252 return false; 253 } 254 else 255 { 256 if(new RegExp(/^(\-?)(\d+)(.{1})(\d+)$/g).test(trim(str))) 257 return true; 258 else 259 return false; 260 } 261 }//~~~ 262 263 /*--------------------------------- Double ---------------------------------------*/ 264 /********************************** date ******************************************/ 265 /** 266 *校验字符串是否为日期型 267 *返回值: 268 *如果为空,定义校验通过, 返回false 269 *如果字串为日期型,校验通过, 返回true 270 *如果日期不合法, 返回false 参考提示信息:输入域的时间不合法!(yyyy-MM-dd) 271 */ 272 function checkIsValidDate(str) 273 { 274 //如果为空,则通过校验 275 if(trim(str) == "") 276 return false; 277 var pattern = new RegExp(/^((\d{4})|(\d{2}))-(\d{1,2})-(\d{1,2})$/g); 278 if(!pattern.test(str)) 279 return false; 280 var arrDate = str.split("-"); 281 if(parseInt(arrDate[0],10) < 100) 282 arrDate[0] = 2000 + parseInt(arrDate[0],10) + ""; 283 var date = new Date(arrDate[0],(parseInt(arrDate[1],10) -1)+"",arrDate[2]); 284 // date.getYear() == arrDate[0] 285 // && 286 if( date.getMonth() == (parseInt(arrDate[1],10) -1)+"" 287 && date.getDate() == arrDate[2]) 288 return true; 289 else 290 return false; 291 } 292 /** 293 *校验字符串是否为日期型 YYYY-MM-DD 294 *返回值: 295 *如果为空,定义校验通过, 返回true 296 *如果字串为日期型,校验通过, 返回true 297 *如果日期不合法, 返回false 参考提示信息:输入域的时间不合法!(yyyy-MM-dd) 298 */ 299 function isDate(str) 300 { 301 //如果为空,则通过校验 302 if((null != str && "null" != str) && "" == str) 303 return true; 304 //校验日期 格式为YYYY-MM-DD 305 var pattern = new RegExp(/^(\d{4})-(\d{1,2})-(\d{1,2})$/g); 306 if(!pattern.test(str)) 307 return false; 308 var arrDate = str.split("-"); 309 var date = new Date(arrDate[0],(parseInt(arrDate[1],10) -1)+"",arrDate[2]); 310 if( date.getMonth() == (parseInt(arrDate[1],10) -1)+"" 311 && date.getDate() == arrDate[2]) 312 return true; 313 else 314 return false; 315 } 316 317 function isYearValidate(str) 318 { 319 320 if(‘‘ == str){ 321 return true; 322 }else{ 323 var pattern = new RegExp(/^(\d{4})$/g); 324 if(!pattern.test(str)){ 325 return false; 326 } 327 return true; 328 } 329 return false; 330 } 331 /* 332 function checkIsValidDate(aForms,fieldArray) 333 { 334 //如果为空,则通过校验 335 for (var i=0;i<(aForms.elements.length);i++) 336 { 337 var el=aForms.elements[i]; 338 for(var j=0;j<fieldArray.length;j++) 339 { 340 if (el.name==fieldArray[j]) 341 { 342 if(el.value =="") 343 { 344 return true; 345 } 346 else 347 { 348 var pattern = /^((\d{4})|(\d{2}))-(\d{1,2})-(\d{1,2})$/g; 349 if(!pattern.test(el.value)) 350 return false; 351 var arrDate = el.value.split("-"); 352 if(parseInt(arrDate[0],10) < 100) 353 arrDate[0] = 2000 + parseInt(arrDate[0],10) + ""; 354 var date = new Date(arrDate[0],(parseInt(arrDate[1],10) -1)+"",arrDate[2]); 355 if(date.getYear() == arrDate[0] 356 && date.getMonth() == (parseInt(arrDate[1],10) -1)+"" 357 && date.getDate() == arrDate[2]) 358 return true; 359 else 360 return false; 361 } 362 } 363 } 364 } 365 366 }*/ 367 //~~~ 368 /** 369 *校验两个日期的先后 370 *返回值: 371 *如果其中有一个日期为空,校验通过, 返回true 372 *如果起始日期早于等于终止日期,校验通过, 返回true 373 *如果起始日期晚于终止日期, 返回false 参考提示信息: 起始日期不能晚于结束日期。 374 */ 375 function checkDateEarlier(strStart,strEnd) 376 { 377 if(checkIsValidDate(strStart) == false || checkIsValidDate(strEnd) == false) 378 return false; 379 //如果有一个输入为空,则通过检验 380 if (( strStart == "" ) || ( strEnd == "" )) 381 return true; 382 var arr1 = strStart.split("-"); 383 var arr2 = strEnd.split("-"); 384 var date1 = new Date(arr1[0],parseInt(arr1[1].replace(/^0/,""),10) - 1,arr1[2]); 385 var date2 = new Date(arr2[0],parseInt(arr2[1].replace(/^0/,""),10) - 1,arr2[2]); 386 if(arr1[1].length == 1) 387 arr1[1] = "0" + arr1[1]; 388 if(arr1[2].length == 1) 389 arr1[2] = "0" + arr1[2]; 390 if(arr2[1].length == 1) 391 arr2[1] = "0" + arr2[1]; 392 if(arr2[2].length == 1) 393 arr2[2]="0" + arr2[2]; 394 var d1 = arr1[0] + arr1[1] + arr1[2]; 395 var d2 = arr2[0] + arr2[1] + arr2[2]; 396 if(parseInt(d1,10) > parseInt(d2,10)) 397 return false; 398 else 399 return true; 400 } 401 //~~~ 402 /*--------------------------------- date -----------------------------------------*/ 403 /********************************** email *****************************************/ 404 /** 405 *校验字符串是否为email型 406 *返回值: 407 *如果为空,定义校验通过, 返回true 408 *如果字串为email型,校验通过, 返回true 409 *如果email不合法, 返回false 参考提示信息:Email的格式不正確! 410 */ 411 function checkEmail(str) 412 { 413 //如果为空,则通过校验 414 if(trim(str) == "") 415 return true; 416 if (str.charAt(0) == "." || str.charAt(0) == "@" || str.indexOf(‘@‘, 0) == -1 417 || str.indexOf(‘.‘, 0) == -1 || str.lastIndexOf("@") == str.length-1 || str.lastIndexOf(".") == str.length-1) 418 return false; 419 else 420 return true; 421 }//~~~ 422 /*--------------------------------- email ----------------------------------------*/ 423 /********************************** chinese ***************************************/ 424 /** 425 *校验字符串是否为中文 426 *返回值: 427 *如果为空,定义校验通过, 返回true 428 *如果字串为中文,校验通过, 返回true 429 *如果字串为非中文, 返回false 参考提示信息:必须为中文! 430 */ 431 function checkIsChinese(str) 432 { 433 //如果值为空,通过校验 434 if (str == "") 435 return true; 436 var pattern = /^([\u4E00-\u9FA5]|[\uFE30-\uFFA0])*$/gi; 437 if (pattern.test(str)) 438 return true; 439 else 440 return false; 441 } 442 443 444 445 //判断下拉列表框是否取值 446 function getComboValue(field) 447 { 448 if (document.getElementById(field).value=="") 449 { 450 setMessage(‘请选择‘); 451 document.forms[0].field.focus(); 452 return; 453 } 454 } 455 //是否为有效年 456 function isYear(aForm,field) 457 { 458 for (var i=0;i<(aForm.elements.length);i++) 459 { 460 var el=aForm.elements[i]; 461 if (el.name==field) 462 { 463 if (document.getElementById(field).value>=1900 && document.getElementById(field).value<=2053) 464 { 465 466 } 467 else 468 { 469 //setMessage(‘当前年份无效!‘); 470 //aForm.field.focus(); 471 return false; 472 } 473 } 474 475 } 476 return true; 477 } 478 function JHshNumberText() 479 { 480 if ( !(((window.event.keyCode >= 48) && (window.event.keyCode <= 57)) 481 || (window.event.keyCode == 13) || (window.event.keyCode == 46) 482 || (window.event.keyCode == 45))) 483 { 484 window.event.keyCode = 0 ; 485 } 486 } 487 488 489 //函数名:fucCheckLength 490 //功能介绍:检查字符串的长度 491 //参数说明:要检查的字符串 492 //返回值:长度值 493 494 function fucCheckLength(strTemp) 495 { 496 var i,sum; 497 sum=0; 498 for(i=0;i<strTemp.length;i++) 499 { 500 if ((strTemp.charCodeAt(i)>=0) && (strTemp.charCodeAt(i)<=255)) 501 sum=sum+1; 502 else 503 sum=sum+2; 504 } 505 return sum; 506 } 507 //add by hongxin_ma 508 //opt1 小数 opt2 负数 509 //当opt1为1时检查num是否是小数 510 //当opt2为1时检查num是否是负数 511 //返回true是正确的,false是错误的 512 function chknbr(num,opt1,opt2) 513 { 514 //第一个字符为"." 返回false 515 if(num.charAt(0)==‘.‘)return false; 516 var i=num.length; 517 var staus; 518 //staus用于记录.的个数 519 status=0; 520 if ((opt2!=1) && (num.charAt(0)==‘-‘)) 521 { 522 //setMessage("You have enter a invalid number."); 523 return false; 524 } 525 //当最后一位为.时出错 526 if (num.charAt(i-1)==‘.‘) 527 { 528 //setMessage("You have enter a invalid number."); 529 return false; 530 } 531 532 for (j=0;j<num.length ; j++){ 533 if (num.charAt(j)==‘.‘) 534 { 535 status++; 536 } 537 if (status>1) 538 { 539 //setMessage("You have enter a invalid number."); 540 return false; 541 } 542 if (num.charAt(j)<‘0‘ || num.charAt(j)>‘9‘ ) 543 { 544 if (((opt1==0) || (num.charAt(j)!=‘.‘)) && (j!=0)) 545 { 546 //setMessage("You have enter a invalid number."); 547 return false; 548 } 549 } 550 } 551 return true; 552 } 553 /* 554 *add by hongxin_ma四舍五入函数 555 *@param input 输入的原值 556 *@param exact 精确的位数 557 */ 558 function round(input,exact){ 559 if(exact==0){ 560 if(new RegExp(/^\d+.*$/).test(input)) 561 { 562 input=parseFloat(input)+0.5; 563 return parseInt(input,‘10‘); 564 }else if(new RegExp(/^\-\d+.*$/).test(input)){ 565 input=parseFloat(input)-0.5; 566 return parseInt(input,‘10‘); 567 } 568 else 569 { 570 return input 571 }; 572 } 573 var substract = ‘0.‘; 574 var result = ‘‘; 575 for(var i=0;i<exact;i++){ 576 substract+=‘0‘; 577 } 578 substract+=‘5‘; 579 try{ 580 if(parseFloat(input)>0) 581 { 582 result = parseFloat(input)+parseFloat(substract); 583 }else 584 { 585 result = parseFloat(input)-parseFloat(substract); 586 } 587 result = result.toString(); 588 var end = parseInt(result.indexOf("."),"10")+parseInt(exact,"10")+1; 589 result = result.substring(0,end); 590 }catch(e){ 591 return result; 592 } 593 if(result==-0) 594 { 595 result = Math.abs(result); 596 } 597 return result; 598 } 599 600 /** 601 * add by hongpeng_dong 2007.05.11 602 * 验证字符串是否是电话号码,传真 603 * 区号为3-4位 可以不写 区号后可以带一个-号,号码为3-8位) 604 * 允许空值 605 * @param 字符串 606 * @return 合理true 否则为false 空返回true 607 */ 608 function validateTel(str){ 609 if(‘‘ == trim(str)) 610 return true; 611 var pattern = new RegExp(/(^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)/); 612 return pattern.exec(str); 613 } 614 /** 615 * add by hongpeng_dong 2007.12.11 616 * 验证字符串是否是电话号码,传真 617 * 格式为 区号(3-4位)-号码(3-8位) 如:0431-85667788 618 * 允许空值 619 * @param 字符串 620 * @return 合理true 否则为false 空返回true 621 */ 622 function validateTelToo(str){ 623 if(‘‘ == trim(str)) 624 return true; 625 var pattern = new RegExp(/^[0-9]{3,4}\-[0-9]{3,8}$/); 626 return pattern.exec(str); 627 } 628 629 /** 630 * add by hongpeng_dong 2007.05.11 631 * 验证字符串是否是手机号 (必须以1打头 前面可以加0 其它为10位) 632 * 允许空值 633 * @param 字符串 634 * @return 合理true 否则为false 空返回true 635 */ 636 function validateMonoTel(str){ 637 if(‘‘ == trim(str)) 638 return true; 639 var pattern = new RegExp(/^0{0,1}1[0-9]{10}$/); 640 return pattern.test(str); 641 } 642 643 /** 644 * add by hongpeng_dong 2007.04.03 645 * 验证字符串是否只由字母,数字或两者组合而成 646 * @param 字符串 647 * @return 是true 非false 648 */ 649 function checkIsStrNum(str){ 650 if(new RegExp(/^[a-zA-Z0-9]*$/g).test(str)){ 651 return true; 652 } 653 return false; 654 } 655 656 /** 657 * add by chun_chang 2007.05.15 658 * 验证字符串是否只由字母组合而成 659 * @param 字符串 660 * @return 是true 非false 661 */ 662 function checkIsChar(str){ 663 if(new RegExp(/^[a-zA-Z]*$/g).test(str)){ 664 return true; 665 } 666 return false; 667 } 668 669 /** 670 * add by hongpeng_dong 2007.05.12 671 * 验证金额,成绩等可以带小数点数字的格式 672 * @param str(要验证的字符串) num1(整数部分允许的最大长度) num2(小数点后允许的最大长度) 673 * num1 num2 要求均为大于0的正整数 否则直接返回false 674 * @return 格式正确true 不正确false 675 * (正确格式可以为不含小数点的正整数,长度最大为传入的数值;如果str为空,返回true) 676 */ 677 function validateResult(str,num1,num2){ 678 if(‘‘ == trim(str)) 679 return true; 680 if(num1 ==0 || num2 == 0) 681 return false; 682 var v1 = ‘‘; 683 var v2 = ‘‘; 684 if(num1 != 1) 685 v1=‘,‘ + num1; 686 if(num2 != 1) 687 v2 = ‘,‘+num2; 688 var re = new RegExp(‘\(^[0-9]{1‘+v1+‘}\\.[0-9]{1‘+v2+‘}$)|(^[0-9]{1‘+v1+‘}$)‘); 689 return re.test(str); 690 } 691 692 /** 693 * 计算两个日期之间的差值 694 * 使用方法:(eg): alert(dateDiff(‘h‘, ‘2007-4-14‘, ‘2007-4-19‘)); 695 * h 表示 HOUR, D 表示 day, M 表示 minute, s 表示 second 696 */ 697 function dateDiff(interval, date1, date2) 698 { 699 var objInterval = {‘D‘ : 1000 * 60 * 60 * 24, ‘H‘ : 1000 * 60 * 60, ‘M‘ : 1000 * 60, ‘S‘ : 1000}; 700 interval = interval.toUpperCase(); 701 var dt1 = Date.parse(date1.replace(/-/g, ‘/‘)); 702 var dt2 = Date.parse(date2.replace(/-/g, ‘/‘)); 703 try 704 { 705 return Math.round((dt2 - dt1) / eval(‘(objInterval.‘ + interval + ‘)‘)); 706 } 707 catch (e) 708 { 709 return e.message; 710 } 711 dt1 = null; 712 dt2 = null; 713 objInterval = null; 714 } 715 716 /* 717 add by sihua_yao 718 校验网站url 719 只允许输入http:// https://的 720 参数 :url 为对象 721 */ 722 function checkWebUrl(url) 723 { 724 if(url.value==""||url.value=="http://"||url.value=="https://") 725 { 726 setMessage ("请填写正确的网址!如http://www.ideal.com!"); 727 return false; 728 } 729 730 if(url.value.length<8) 731 { 732 setMessage("请填写正确的网址!如http://www.ideal.com!"); 733 //url.focus(); 734 return false; 735 } 736 737 if ( url.value.substring(0, 7)!="http://" && url.value.substring(0, 8)!="https://" ) 738 { 739 setMessage ("请填写正确的网址!如http://www.ideal.com!"); 740 return false; 741 } 742 743 if(url.value.substring(0, 7)=="http://") 744 { 745 var s=""; 746 747 s=url.value.substring(7,url.value.length); 748 749 var a=s.indexOf(".", 0); 750 751 if(a=="-1") 752 { 753 setMessage ("请填写正确的网址!如http://www.ideal.com!"); 754 //url.focus(); 755 return false; 756 } 757 758 var s1=s.substring(a+1,s.length) 759 var b=s1.indexOf(".", 0); 760 761 if(b=="-1") 762 { 763 setMessage ("请填写正确的网址!如http://www.ideal.com!"); 764 //url.focus(); 765 return false; 766 } 767 768 return true; 769 } 770 771 if(url.value.substring(0, 8)=="https://") 772 { 773 var s=""; 774 s=url.value.substring(8,url.value.length); 775 var a=s.indexOf(".", 0); 776 777 if(a=="-1") 778 { 779 setMessage ("请填写正确的网址!如http://www.ideal.com!"); 780 //url.focus(); 781 return false; 782 } 783 784 var s1=s.substring(a+1,s.length) 785 var b=s1.indexOf(".", 0); 786 787 if(b=="-1") 788 { 789 setMessage ("请填写正确的网址!如http://www.ideal.com!"); 790 //url.focus(); 791 return false; 792 } 793 return true; 794 } 795 } 796 797 /** 798 * added by hongpeng_dong 2007.11.21 799 * 得到文件的后缀名 800 * oFile为file控件对象 801 */ 802 function getFilePostfix(oFile) 803 { 804 if(oFile == null) 805 return null; 806 var pattern = /(.*).(.*)$/gi; 807 if(typeof(oFile) == "object") 808 { 809 if(oFile.value == null || oFile.value == "") 810 return null; 811 var arr = pattern.exec(oFile.value); 812 return RegExp.$2; 813 } 814 else if(typeof(oFile) == "string") 815 { 816 var arr = pattern.exec(oFile); 817 return RegExp.$2; 818 } 819 else 820 return null; 821 } 822 /** 823 * add by wei_liu at 2007-02-3 824 * 验证是否为空 825 * arg1为验证的文档的id 826 * arg2为验证的文档名称 827 * aarg3文档的最大长度,可以不用验证,只需传递两个前个就可以 828 * example funcion aa(){ 829 * if(!isNotNull(‘voteTitle‘,"标题",20)){return ;} 830 * 其它操作other action 831 * } 832 * 也可以不用验证长度 833 * example function aa(){ 834 * if(!isNotNull(‘voteTitle‘,"标题")){return ;} 835 * } 836 * ***********************验证通过返回true 837 */ 838 function isNotNull(arg1,arg2,arg3) 839 { 840 if(document.getElementById(arg1)){ 841 if(trim(document.getElementById(arg1).value) ==‘‘) 842 { 843 setMessage(‘请填写‘+arg2+‘!‘); 844 return false; 845 } 846 if(arg3 !=‘‘ && typeof(arg3)!=‘‘ && arg3 !=null && arg3 != ‘undefined‘) 847 { 848 if(!maxLongById(arg1,arg3,arg2)){return false;} 849 } 850 return true; 851 }else{ 852 setMessage(‘你要验证的字段不存在或ID重复定义‘); 853 return false; 854 } 855 } 856 /** 857 * add by wei_liu at 2007-02-3 858 * 验证长度 859 * arg1为验证的文档的id 860 * arg2文档的最大长度 861 * arg3为验证的文档名称 862 * ***********************验证通过返回true 863 */ 864 function maxLongById(arg1,arg2,arg3) 865 //str.replace(/[^\x00-\xff]/g,"**").length 866 { 867 if(document.getElementById(arg1)){ 868 var str =document.getElementById(arg1).value; 869 var mLength =str.replace(/[^\x00-\xff]/g,"**").length; 870 if(mLength>arg2) 871 { 872 setMessage(arg3+‘不能超过‘+arg2+‘个字符或‘+(arg2/2)+‘个汉字!‘); 873 return false; 874 } 875 return true; 876 }else{ 877 setMessage(‘你要验证的字段不存在或ID重复定义‘); 878 return false; 879 } 880 } 881 /** 882 * add by wei_liu at 2007-02-3 883 * 验证是否为空 884 * arg1为验证的文档的value 885 * arg2为验证的文档名称 886 * aarg3文档的最大长度,可以不用验证,只需传递两个前个就可以 887 * example funcion aa(){ 888 * if(!isNotNull(‘voteTitle‘,"标题",20)){return ;} 889 * 其它操作other action 890 * } 891 * 也可以不用验证长度 892 * example function aa(){ 893 * if(!isNotNull(‘voteTitle‘,"标题")){return ;} 894 * } 895 * ***********************验证通过返回true 896 */ 897 function isNotNullValue(arg1,arg2,arg3) 898 { 899 900 if(trim(arg1) ==‘‘ || typeof(arg1)==‘undefined‘) 901 { 902 setMessage(‘请填写‘+arg2+‘!‘); 903 return false; 904 } 905 if(arg3 !=‘‘ && typeof(arg3)!=‘‘ && arg3 !=null &&arg3 != ‘undefined‘) 906 { 907 if(!maxLongByValue(arg1,arg3,arg2)){return false;} 908 } 909 return true; 910 911 } 912 /** 913 * add by wei_liu at 2007-02-3 914 * 验证长度 915 * val1为验证的文档的value 916 * val2文档的最大长度 917 * val3为验证的文档名称 918 * ***********************验证通过返回true 919 */ 920 function maxLongByValue(val1,val2,val3){ 921 var mLength = val1.replace(/[^\x00-\xff]/g,"**").length; 922 if(mLength>val2) 923 { 924 setMessage(val3+‘不能超过‘+val2+‘个字符或‘+(val2/2)+‘个汉字!‘); 925 return false; 926 } 927 return true; 928 } 929 930 /** 931 * added by hongpeng_dong 2008.3.11 932 * 判断输入值是否是月份 933 * param:validateMonth 要验证的值 934 * 是true 否false 935 */ 936 function isMonth(validateMonth){ 937 var pattern = new RegExp(/(^[0]{0,1}[1-9]$)|(^1[0-2]$)/); 938 return pattern.test(validateMonth); 939 } 940 941 /** 942 * added by hongpeng_dong 2008.3.11 943 * 判断输入值是否是年份 944 * param:validateYear 要验证的值 945 * 是true 否false 946 */ 947 function isYear(validateYear){ 948 var pattern = new RegExp(/^[1-9][0-9]{3}$/); 949 return pattern.test(validateYear); 950 } 951 952 953 954 955
以上是关于js表单验证工具包的主要内容,如果未能解决你的问题,请参考以下文章