常用的js表单验证方法大全
代码语言:javascript
复制 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(" tnr");
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(" tnr");
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