1/* 2 ------------------------------------------------------------------------- 3 JavaScript Form Validator (gen_validatorv4.js) 4 Version 4.0 5 Copyright (C) 2003-2011 JavaScript-Coder.com. All rights reserved. 6 You can freely use this script in your Web pages. 7 You may adapt this script for your own needs, provided these opening credit 8 lines are kept intact. 9 10 The Form validation script is distributed free from JavaScript-Coder.com 11 For updates, please visit: 12 http://www.javascript-coder.com/html-form/javascript-form-validation.phtml 13 14 Questions & comments please send to form.val (at) javascript-coder.com 15 ------------------------------------------------------------------------- 16*/ 17 18function Validator(frmname) 19{ 20 this.validate_on_killfocus = false; 21 this.formobj = document.forms[frmname]; 22 if (!this.formobj) 23 { 24 alert("Error: couldnot get Form object " + frmname); 25 return; 26 } 27 if (this.formobj.onsubmit) 28 { 29 this.formobj.old_onsubmit = this.formobj.onsubmit; 30 this.formobj.onsubmit = null; 31 } 32 else 33 { 34 this.formobj.old_onsubmit = null; 35 } 36 this.formobj._sfm_form_name = frmname; 37 38 this.formobj.onsubmit = form_submit_handler; 39 this.addValidation = add_validation; 40 41 this.formobj.addnlvalidations = new Array(); 42 this.addAddnlValidationFunction = add_addnl_vfunction; 43 this.formobj.runAddnlValidations = run_addnl_validations; 44 this.setAddnlValidationFunction = set_addnl_vfunction;//for backward compatibility 45 46 47 this.clearAllValidations = clear_all_validations; 48 this.focus_disable_validations = false; 49 50 document.error_disp_handler = new sfm_ErrorDisplayHandler(); 51 52 this.EnableOnPageErrorDisplay = validator_enable_OPED; 53 this.EnableOnPageErrorDisplaySingleBox = validator_enable_OPED_SB; 54 55 this.show_errors_together = false; 56 this.EnableMsgsTogether = sfm_enable_show_msgs_together; 57 document.set_focus_onerror = true; 58 this.EnableFocusOnError = sfm_validator_enable_focus; 59 60 this.formobj.error_display_loc = 'right'; 61 this.SetMessageDisplayPos = sfm_validator_message_disp_pos; 62 63 this.formobj.DisableValidations = sfm_disable_validations; 64 this.formobj.validatorobj = this; 65} 66 67 68function sfm_validator_enable_focus(enable) 69{ 70 document.set_focus_onerror = enable; 71} 72 73function add_addnl_vfunction() 74{ 75 var proc = 76 { 77 }; 78 proc.func = arguments[0]; 79 proc.arguments = []; 80 81 for (var i = 1; i < arguments.length; i++) 82 { 83 proc.arguments.push(arguments[i]); 84 } 85 this.formobj.addnlvalidations.push(proc); 86} 87 88function set_addnl_vfunction(functionname) 89{ 90 if(functionname.constructor == String) 91 { 92 alert("Pass the function name like this: validator.setAddnlValidationFunction(DoCustomValidation)\n "+ 93 "rather than passing the function name as string"); 94 return; 95 } 96 this.addAddnlValidationFunction(functionname); 97} 98 99function run_addnl_validations() 100{ 101 var ret = true; 102 for (var f = 0; f < this.addnlvalidations.length; f++) 103 { 104 var proc = this.addnlvalidations[f]; 105 var args = proc.arguments || []; 106 if (!proc.func.apply(null, args)) 107 { 108 ret = false;
109 } 110 } 111 return ret; 112} 113 114function sfm_set_focus(objInput) 115{ 116 if (document.set_focus_onerror) 117 { 118 if (!objInput.disabled && objInput.type != 'hidden') 119 { 120 objInput.focus(); 121 } 122 } 123} 124 125function sfm_disable_validations() 126{ 127 if (this.old_onsubmit) 128 { 129 this.onsubmit = this.old_onsubmit; 130 } 131 else 132 { 133 this.onsubmit = null; 134 } 135} 136 137function sfm_enable_show_msgs_together() 138{ 139 this.show_errors_together = true; 140 this.formobj.show_errors_together = true; 141} 142 143function sfm_validator_message_disp_pos(pos) 144{ 145 this.formobj.error_display_loc = pos; 146} 147 148function clear_all_validations() 149{ 150 for (var itr = 0; itr < this.formobj.elements.length; itr++) 151 { 152 this.formobj.elements[itr].validationset = null; 153 } 154} 155 156function form_submit_handler() 157{ 158 var bRet = true; 159 document.error_disp_handler.clear_msgs(); 160 for (var itr = 0; itr < this.elements.length; itr++) 161 { 162 if (this.elements[itr].validationset && !this.elements[itr].validationset.validate()) 163 { 164 bRet = false; 165 } 166 if (!bRet && !this.show_errors_together) 167 { 168 break; 169 } 170 } 171 172 if (this.show_errors_together || bRet && !this.show_errors_together) 173 { 174 if (!this.runAddnlValidations()) 175 { 176 bRet = false; 177 } 178 } 179 if (!bRet) 180 { 181 document.error_disp_handler.FinalShowMsg(); 182 return false; 183 } 184 return true; 185} 186 187function add_validation(itemname, descriptor, errstr) 188{ 189 var condition = null; 190 if (arguments.length > 3) 191 { 192 condition = arguments[3]; 193 } 194 if (!this.formobj) 195 { 196 alert("Error: The form object is not set properly"); 197 return; 198 } //if 199 var itemobj = this.formobj[itemname]; 200 201 if (itemobj.length && isNaN(itemobj.selectedIndex)) 202 //for radio button; don't do for 'select' item 203 { 204 itemobj = itemobj[0]; 205 } 206 if (!itemobj) 207 { 208 alert("Error: Couldnot get the input object named: " + itemname); 209 return; 210 } 211 if (true == this.validate_on_killfocus) 212 { 213 itemobj.onblur = handle_item_on_killfocus; 214 } 215 if (!itemobj.validationset) 216 { 217 itemobj.validationset = new ValidationSet(itemobj, this.show_errors_together); 218 } 219 itemobj.validationset.add(descriptor, errstr, condition); 220 itemobj.validatorobj = this; 221} 222 223function handle_item_on_killfocus() 224{ 225 if (this.validatorobj.focus_disable_validations == true) 226 { 227 /* 228 To avoid repeated looping message boxes 229 */ 230 this.validatorobj.focus_disable_validations = false; 231 return false; 232 } 233 234 if (null != this.validationset) 235 { 236 document.error_disp_handler.clear_msgs(); 237 if (false == this.validationset.validate()) 238 { 239 document.error_disp_handler.FinalShowMsg(); 240 return false; 241 } 242 } 243} 244 245function validator_enable_OPED() 246{ 247 document.error_disp_handler.EnableOnPageDisplay(false); 248} 249 250function validator_enable_OPED_SB() 251{ 252 document.error_disp_handler.EnableOnPageDisplay(true); 253} 254 255function sfm_ErrorDisplayHandler() 256{ 257 this.msgdisplay = new AlertMsgDisplayer(); 258 this.EnableOnPageDisplay = edh_EnableOnPageDisplay; 259 this.ShowMsg = edh_ShowMsg; 260 this.FinalShowMsg = edh_FinalShowMsg; 261 this.all_msgs = new Array(); 262 this.clear_msgs = edh_clear_msgs; 263} 264 265function edh_clear_msgs() 266{ 267 this.msgdisplay.clearmsg(this.all_msgs); 268 this.all_msgs = new Array(); 269} 270 271function edh_FinalShowMsg() 272{ 273 if (this.all_msgs.length == 0) 274 { 275 return; 276 } 277 this.msgdisplay.showmsg(this.all_msgs); 278} 279 280function edh_EnableOnPageDisplay(single_box) 281{ 282 if (true == single_box) 283 { 284 this.msgdisplay = new SingleBoxErrorDisplay(); 285 } 286 else 287 { 288 this.msgdisplay = new DivMsgDisplayer(); 289 } 290} 291 292function edh_ShowMsg(msg, input_element) 293{ 294 var objmsg = new Array(); 295 objmsg["input_element"] = input_element; 296 objmsg["msg"] = msg; 297 this.all_msgs.push(objmsg); 298} 299 300function AlertMsgDisplayer() 301{ 302 this.showmsg = alert_showmsg; 303 this.clearmsg = alert_clearmsg; 304} 305 306function alert_clearmsg(msgs) 307{ 308 309} 310 311function alert_showmsg(msgs) 312{ 313 var whole_msg = ""; 314 var first_elmnt = null; 315 for (var m = 0; m < msgs.length; m++) 316 { 317 if (null == first_elmnt) 318 { 319 first_elmnt = msgs[m]["input_element"]; 320 } 321 whole_msg += msgs[m]["msg"] + "\n"; 322 } 323 324 alert(whole_msg); 325 326 if (null != first_elmnt) 327 { 328 sfm_set_focus(first_elmnt); 329 } 330} 331 332function sfm_show_error_msg(msg, input_elmt) 333{ 334 document.error_disp_handler.ShowMsg(msg, input_elmt); 335} 336 337function SingleBoxErrorDisplay() 338{ 339 this.showmsg = sb_div_showmsg; 340 this.clearmsg = sb_div_clearmsg; 341} 342 343function sb_div_clearmsg(msgs) 344{ 345 var divname = form_error_div_name(msgs); 346 sfm_show_div_msg(divname, ""); 347} 348 349function sb_div_showmsg(msgs) 350{ 351 var whole_msg = "<ul>\n"; 352 for (var m = 0; m < msgs.length; m++) 353 { 354 whole_msg += "<li>" + msgs[m]["msg"] + "</li>\n"; 355 } 356 whole_msg += "</ul>"; 357 var divname = form_error_div_name(msgs); 358 var anc_name = divname + "_loc"; 359 whole_msg = "<a name='" + anc_name + "' >" + whole_msg; 360 361 sfm_show_div_msg(divname, whole_msg); 362 363 window.location.hash = anc_name; 364} 365 366function form_error_div_name(msgs) 367{ 368 var input_element = null; 369 370 for (var m in msgs) 371 { 372 input_element = msgs[m]["input_element"]; 373 if (input_element) 374 { 375 break; 376 } 377 } 378 379 var divname = ""; 380 if (input_element) 381 { 382 divname = input_element.form._sfm_form_name + "_errorloc"; 383 } 384 385 return divname; 386} 387 388function sfm_show_div_msg(divname,msgstring) 389{ 390 if(divname.length<=0) return false;
391 392 if(document.layers) 393 { 394 divlayer = document.layers[divname]; 395 if(!divlayer){return;} 396 divlayer.document.open(); 397 divlayer.document.write(msgstring); 398 divlayer.document.close(); 399 } 400 else 401 if(document.all) 402 { 403 divlayer = document.all[divname]; 404 if(!divlayer){return;} 405 divlayer.innerHTML=msgstring; 406 } 407 else 408 if(document.getElementById) 409 { 410 divlayer = document.getElementById(divname); 411 if(!divlayer){return;} 412 divlayer.innerHTML =msgstring; 413 } 414 divlayer.style.visibility="visible"; 415 return false; 416} 417 418function DivMsgDisplayer() 419{ 420 this.showmsg = div_showmsg; 421 this.clearmsg = div_clearmsg; 422} 423 424function div_clearmsg(msgs) 425{ 426 for (var m in msgs) 427 { 428 var divname = element_div_name(msgs[m]["input_element"]); 429 show_div_msg(divname, ""); 430 } 431} 432 433function element_div_name(input_element) 434{ 435 var divname = input_element.form._sfm_form_name + "_" + input_element.name + "_errorloc"; 436 437 divname = divname.replace(/[\[\]]/gi, ""); 438 439 return divname; 440} 441 442function div_showmsg(msgs) 443{ 444 var whole_msg; 445 var first_elmnt = null; 446 for (var m in msgs) 447 { 448 if (null == first_elmnt) 449 { 450 first_elmnt = msgs[m]["input_element"]; 451 } 452 var divname = element_div_name(msgs[m]["input_element"]); 453 show_div_msg(divname, msgs[m]["msg"]); 454 } 455 if (null != first_elmnt) 456 { 457 sfm_set_focus(first_elmnt); 458 } 459} 460 461function show_div_msg(divname, msgstring) 462{ 463 if (divname.length <= 0) return false; 464 465 if (document.layers) 466 { 467 divlayer = document.layers[divname]; 468 if (!divlayer) 469 { 470 return; 471 } 472 divlayer.document.open(); 473 divlayer.document.write(msgstring); 474 divlayer.document.close(); 475 } 476 else if (document.all) 477 { 478 divlayer = document.all[divname]; 479 if (!divlayer) 480 { 481 return; 482 } 483 divlayer.innerHTML = msgstring; 484 } 485 else if (document.getElementById) 486 { 487 divlayer = document.getElementById(divname); 488 if (!divlayer) 489 { 490 return; 491 } 492 divlayer.innerHTML = msgstring; 493 } 494 divlayer.style.visibility = "visible"; 495} 496 497function ValidationDesc(inputitem, desc, error, condition) 498{ 499 this.desc = desc; 500 this.error = error; 501 this.itemobj = inputitem; 502 this.condition = condition; 503 this.validate = vdesc_validate; 504} 505 506function vdesc_validate() 507{ 508 if (this.condition != null) 509 { 510 if (!eval(this.condition)) 511 { 512 return true; 513 } 514 } 515 if (!validateInput(this.desc, this.itemobj, this.error)) 516 { 517 this.itemobj.validatorobj.focus_disable_validations = true; 518 sfm_set_focus(this.itemobj); 519 return false; 520 } 521 522 return true; 523} 524 525function ValidationSet(inputitem, msgs_together) 526{ 527 this.vSet = new Array(); 528 this.add = add_validationdesc; 529 this.validate = vset_validate; 530 this.itemobj = inputitem; 531 this.msgs_together = msgs_together; 532} 533 534function add_validationdesc(desc, error, condition) 535{ 536 this.vSet[this.vSet.length] = 537 new ValidationDesc(this.itemobj, desc, error, condition); 538} 539 540function vset_validate() 541{ 542 var bRet = true; 543 for (var itr = 0; itr < this.vSet.length; itr++) 544 { 545 bRet = bRet && this.vSet[itr].validate(); 546 if (!bRet && !this.msgs_together) 547 { 548 break; 549 } 550 } 551 return bRet; 552} 553 554/* checks the validity of an email address entered 555* returns true or false 556*/ 557function validateEmail(email) 558{ 559 var splitted = email.match("^(.+)@(.+)$"); 560 if (splitted == null) return false; 561 if (splitted[1] != null) 562 { 563 var regexp_user = /^\"?[\w-_\.]*\"?$/; 564 if (splitted[1].match(regexp_user) == null) return false; 565 } 566 if (splitted[2] != null) 567 { 568 var regexp_domain = /^[\w-\.]*\.[A-Za-z]{2,4}$/; 569 if (splitted[2].match(regexp_domain) == null) 570 { 571 var regexp_ip = /^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/; 572 if (splitted[2].match(regexp_ip) == null) return false;
573 } // if 574 return true; 575 } 576 return false; 577} 578 579function TestComparison(objValue, strCompareElement, strvalidator, strError) 580{ 581 var bRet = true; 582 var objCompare = null; 583 if (!objValue.form) 584 { 585 sfm_show_error_msg("Error: No Form object!", objValue); 586 return false 587 } 588 objCompare = objValue.form.elements[strCompareElement]; 589 if (!objCompare) 590 { 591 sfm_show_error_msg("Error: Element with name" + strCompareElement + " not found !", objValue); 592 return false; 593 } 594 595 var objval_value = objValue.value; 596 var objcomp_value = objCompare.value; 597 598 if (strvalidator != "eqelmnt" && strvalidator != "neelmnt") 599 { 600 objval_value = objval_value.replace(/\,/g, ""); 601 objcomp_value = objcomp_value.replace(/\,/g, ""); 602 603 if (isNaN(objval_value)) 604 { 605 sfm_show_error_msg(objValue.name + ": Should be a number ", objValue); 606 return false; 607 } //if 608 if (isNaN(objcomp_value)) 609 { 610 sfm_show_error_msg(objCompare.name + ": Should be a number ", objCompare); 611 return false; 612 } //if 613 } //if 614 var cmpstr = ""; 615 switch (strvalidator) 616 { 617 case "eqelmnt": 618 { 619 if (objval_value != objcomp_value) 620 { 621 cmpstr = " should be equal to "; 622 bRet = false; 623 } //if 624 break; 625 } //case 626 case "ltelmnt": 627 { 628 if (eval(objval_value) >= eval(objcomp_value)) 629 { 630 cmpstr = " should be less than "; 631 bRet = false; 632 } 633 break; 634 } //case 635 case "leelmnt": 636 { 637 if (eval(objval_value) > eval(objcomp_value)) 638 { 639 cmpstr = " should be less than or equal to"; 640 bRet = false; 641 } 642 break; 643 } //case 644 case "gtelmnt": 645 { 646 if (eval(objval_value) <= eval(objcomp_value)) 647 { 648 cmpstr = " should be greater than"; 649 bRet = false; 650 } 651 break; 652 } //case 653 case "geelmnt": 654 { 655 if (eval(objval_value) < eval(objcomp_value)) 656 { 657 cmpstr = " should be greater than or equal to"; 658 bRet = false; 659 } 660 break; 661 } //case 662 case "neelmnt": 663 { 664 if (objval_value.length > 0 && objcomp_value.length > 0 && objval_value == objcomp_value) 665 666 { 667 cmpstr = " should be different from "; 668 bRet = false; 669 } //if 670 break; 671 } 672 } //switch 673 if (bRet == false) 674 { 675 if (!strError || strError.length == 0) 676 { 677 strError = objValue.name + cmpstr + objCompare.name; 678 } //if 679 sfm_show_error_msg(strError, objValue); 680 } //if 681 return bRet; 682} 683 684function TestSelMin(objValue, strMinSel, strError) 685{ 686 var bret = true; 687 var objcheck = objValue.form.elements[objValue.name]; 688 var chkcount = 0; 689 if (objcheck.length) 690 { 691 for (var c = 0; c < objcheck.length; c++) 692 { 693 if (objcheck[c].checked == "1") 694 { 695 chkcount++; 696 } //if 697 } //for 698 } 699 else 700 { 701 chkcount = (objcheck.checked == "1") ? 1 : 0; 702 } 703 var minsel = eval(strMinSel); 704 if (chkcount < minsel) 705 { 706 if (!strError || strError.length == 0) 707 { 708 strError = "Please Select atleast" + minsel + " check boxes for" + objValue.name; 709 } //if 710 sfm_show_error_msg(strError, objValue); 711 bret = false;
712 } 713 return bret; 714} 715 716function TestSelMax(objValue, strMaxSel, strError) 717{ 718 var bret = true; 719 var objcheck = objValue.form.elements[objValue.name]; 720 var chkcount = 0; 721 if (objcheck.length) 722 { 723 for (var c = 0; c < objcheck.length; c++) 724 { 725 if (objcheck[c].checked == "1") 726 { 727 chkcount++; 728 } //if 729 } //for 730 } 731 else 732 { 733 chkcount = (objcheck.checked == "1") ? 1 : 0; 734 } 735 var maxsel = eval(strMaxSel); 736 if (chkcount > maxsel) 737 { 738 if (!strError || strError.length == 0) 739 { 740 strError = "Please Select atmost " + maxsel + " check boxes for" + objValue.name; 741 } //if 742 sfm_show_error_msg(strError, objValue); 743 bret = false; 744 } 745 return bret; 746} 747 748function IsCheckSelected(objValue, chkValue) 749{ 750 var selected = false; 751 var objcheck = objValue.form.elements[objValue.name]; 752 if (objcheck.length) 753 { 754 var idxchk = -1; 755 for (var c = 0; c < objcheck.length; c++) 756 { 757 if (objcheck[c].value == chkValue) 758 { 759 idxchk = c; 760 break; 761 } //if 762 } //for 763 if (idxchk >= 0) 764 { 765 if (objcheck[idxchk].checked == "1") 766 { 767 selected = true; 768 } 769 } //if 770 } 771 else 772 { 773 if (objValue.checked == "1") 774 { 775 selected = true; 776 } //if 777 } //else 778 return selected; 779} 780 781function TestDontSelectChk(objValue, chkValue, strError) 782{ 783 var pass = true; 784 pass = IsCheckSelected(objValue, chkValue) ? false : true; 785 786 if (pass == false) 787 { 788 if (!strError || strError.length == 0) 789 { 790 strError = "Can't Proceed as you selected " + objValue.name; 791 } //if 792 sfm_show_error_msg(strError, objValue); 793 794 } 795 return pass; 796} 797 798function TestShouldSelectChk(objValue, chkValue, strError) 799{ 800 var pass = true; 801 802 pass = IsCheckSelected(objValue, chkValue) ? true : false; 803 804 if (pass == false) 805 { 806 if (!strError || strError.length == 0) 807 { 808 strError = "You should select" + objValue.name; 809 } //if 810 sfm_show_error_msg(strError, objValue); 811 812 } 813 return pass; 814} 815 816function TestRequiredInput(objValue, strError) 817{ 818 var ret = true; 819 if (VWZ_IsEmpty(objValue.value)) 820 { 821 ret = false;
822 } //if 823 else if (objValue.getcal && !objValue.getcal()) 824 { 825 ret = false; 826 } 827 828 if (!ret) 829 { 830 if (!strError || strError.length == 0) 831 { 832 strError = objValue.name + " : Required Field"; 833 } //if 834 sfm_show_error_msg(strError, objValue); 835 } 836 return ret; 837} 838 839function TestFileExtension(objValue, cmdvalue, strError) 840{ 841 var ret = false; 842 var found = false; 843 844 if (objValue.value.length <= 0) 845 { //The 'required' validation is not done here 846 return true; 847 } 848 849 var extns = cmdvalue.split(";"); 850 for (var i = 0; i < extns.length; i++) 851 { 852 ext = objValue.value.substr(objValue.value.length - extns[i].length, extns[i].length); 853 ext = ext.toLowerCase(); 854 if (ext == extns[i]) 855 { 856 found = true; 857 break; 858 } 859 } 860 if (!found) 861 { 862 if (!strError || strError.length == 0) 863 { 864 strError = objValue.name + " allowed file extensions are: " + cmdvalue; 865 } //if 866 sfm_show_error_msg(strError, objValue); 867 ret = false;
868 } 869 else 870 { 871 ret = true; 872 } 873 return ret; 874} 875 876function TestMaxLen(objValue, strMaxLen, strError) 877{ 878 var ret = true; 879 if (eval(objValue.value.length) > eval(strMaxLen)) 880 { 881 if (!strError || strError.length == 0) 882 { 883 strError = objValue.name + " : " + strMaxLen + " characters maximum "; 884 } //if 885 sfm_show_error_msg(strError, objValue); 886 ret = false; 887 } //if 888 return ret; 889} 890 891function TestMinLen(objValue, strMinLen, strError) 892{ 893 var ret = true; 894 if (eval(objValue.value.length) < eval(strMinLen)) 895 { 896 if (!strError || strError.length == 0) 897 { 898 strError = objValue.name + " : " + strMinLen + " characters minimum "; 899 } //if 900 sfm_show_error_msg(strError, objValue); 901 ret = false; 902 } //if 903 return ret; 904} 905 906function TestInputType(objValue, strRegExp, strError, strDefaultError) 907{ 908 var ret = true; 909 910 var charpos = objValue.value.search(strRegExp); 911 if (objValue.value.length > 0 && charpos >= 0) 912 { 913 if (!strError || strError.length == 0) 914 { 915 strError = strDefaultError; 916 } //if 917 sfm_show_error_msg(strError, objValue); 918 ret = false;
919 } //if 920 return ret; 921} 922 923function TestEmail(objValue, strError) 924{ 925 var ret = true; 926 if (objValue.value.length > 0 && !validateEmail(objValue.value)) 927 { 928 if (!strError || strError.length == 0) 929 { 930 strError = objValue.name + ": Enter a valid Email address "; 931 } //if 932 sfm_show_error_msg(strError, objValue); 933 ret = false; 934 } //if 935 return ret; 936} 937 938function TestLessThan(objValue, strLessThan, strError) 939{ 940 var ret = true; 941 var obj_value = objValue.value.replace(/\,/g, ""); 942 strLessThan = strLessThan.replace(/\,/g, ""); 943 944 if (isNaN(obj_value)) 945 { 946 sfm_show_error_msg(objValue.name + ": Should be a number ", objValue); 947 ret = false; 948 } //if 949 else if (eval(obj_value) >= eval(strLessThan)) 950 { 951 if (!strError || strError.length == 0) 952 { 953 strError = objValue.name + " : value should be less than " + strLessThan; 954 } //if 955 sfm_show_error_msg(strError, objValue); 956 ret = false;
957 } //if 958 return ret; 959} 960 961function TestGreaterThan(objValue, strGreaterThan, strError) 962{ 963 var ret = true; 964 var obj_value = objValue.value.replace(/\,/g, ""); 965 strGreaterThan = strGreaterThan.replace(/\,/g, ""); 966 967 if (isNaN(obj_value)) 968 { 969 sfm_show_error_msg(objValue.name + ": Should be a number ", objValue); 970 ret = false; 971 } //if 972 else if (eval(obj_value) <= eval(strGreaterThan)) 973 { 974 if (!strError || strError.length == 0) 975 { 976 strError = objValue.name + " : value should be greater than " + strGreaterThan; 977 } //if 978 sfm_show_error_msg(strError, objValue); 979 ret = false; 980 } //if 981 return ret; 982} 983 984function TestRegExp(objValue, strRegExp, strError) 985{ 986 var ret = true; 987 if (objValue.value.length > 0 && !objValue.value.match(strRegExp)) 988 { 989 if (!strError || strError.length == 0) 990 { 991 strError = objValue.name + ": Invalid characters found "; 992 } //if 993 sfm_show_error_msg(strError, objValue); 994 ret = false;
995 } //if 996 return ret; 997} 998 999function TestDontSelect(objValue, dont_sel_value, strError) 1000{ 1001 var ret = true; 1002 if (objValue.value == null) 1003 { 1004 sfm_show_error_msg("Error: dontselect command for non-select Item", objValue); 1005 ret = false; 1006 } 1007 else if (objValue.value == dont_sel_value) 1008 { 1009 if (!strError || strError.length == 0) 1010 { 1011 strError = objValue.name + ": Please Select one option "; 1012 } //if 1013 sfm_show_error_msg(strError, objValue); 1014 ret = false; 1015 } 1016 return ret; 1017} 1018 1019function TestSelectOneRadio(objValue, strError) 1020{ 1021 var objradio = objValue.form.elements[objValue.name]; 1022 var one_selected = false; 1023 for (var r = 0; r < objradio.length; r++) 1024 { 1025 if (objradio[r].checked == "1") 1026 { 1027 one_selected = true; 1028 break; 1029 } 1030 } 1031 if (false == one_selected) 1032 { 1033 if (!strError || strError.length == 0) 1034 { 1035 strError = "Please select one option from " + objValue.name; 1036 } 1037 sfm_show_error_msg(strError, objValue); 1038 } 1039 return one_selected; 1040} 1041 1042function TestSelectRadio(objValue, cmdvalue, strError, testselect) 1043{ 1044 var objradio = objValue.form.elements[objValue.name]; 1045 var selected = false; 1046 1047 for (var r = 0; r < objradio.length; r++) 1048 { 1049 if (objradio[r].value == cmdvalue && objradio[r].checked == "1") 1050 { 1051 selected = true; 1052 break; 1053 } 1054 } 1055 if (testselect == true && false == selected || testselect == false && true == selected) 1056 { 1057 sfm_show_error_msg(strError, objValue); 1058 return false; 1059 } 1060 return true; 1061} 1062 1063 1064//* Checks each field in a form 1065 1066 1067function validateInput(strValidateStr, objValue, strError) 1068{ 1069 1070 var ret = true; 1071 var epos = strValidateStr.search("="); 1072 var command = ""; 1073 var cmdvalue = ""; 1074 if (epos >= 0) 1075 { 1076 command = strValidateStr.substring(0, epos); 1077 cmdvalue = strValidateStr.substr(epos + 1); 1078 } 1079 else 1080 { 1081 command = strValidateStr; 1082 } 1083 1084 switch (command) 1085 { 1086 case "req": 1087 case "required": 1088 { 1089 ret = TestRequiredInput(objValue, strError) 1090 break; 1091 } 1092 case "maxlength": 1093 case "maxlen": 1094 { 1095 ret = TestMaxLen(objValue, cmdvalue, strError) 1096 break; 1097 } 1098 case "minlength": 1099 case "minlen": 1100 { 1101 ret = TestMinLen(objValue, cmdvalue, strError) 1102 break; 1103 } 1104 case "alnum": 1105 case "alphanumeric": 1106 { 1107 ret = TestInputType(objValue, "[^A-Za-z0-9]", strError, objValue.name + ": Only alpha-numeric characters allowed "); 1108 break; 1109 } 1110 case "alnum_s": 1111 case "alphanumeric_space": 1112 { 1113 ret = TestInputType(objValue, "[^A-Za-z0-9\\s]", strError, objValue.name + ": Only alpha-numeric characters and space allowed "); 1114 break; 1115 } 1116 case "num": 1117 case "numeric": 1118 case "dec": 1119 case "decimal": 1120 { 1121 if (objValue.value.length > 0 && !objValue.value.match(/^[\-\+]?[\d\,]*\.?[\d]*$/)) 1122 { 1123 sfm_show_error_msg(strError, objValue); 1124 ret = false;
1125 } //if 1126 break; 1127 } 1128 case "alphabetic": 1129 case "alpha": 1130 { 1131 ret = TestInputType(objValue, "[^A-Za-z]", strError, objValue.name + ": Only alphabetic characters allowed "); 1132 break; 1133 } 1134 case "alphabetic_space": 1135 case "alpha_s": 1136 { 1137 ret = TestInputType(objValue, "[^A-Za-z\\s]", strError, objValue.name + ": Only alphabetic characters and space allowed "); 1138 break; 1139 } 1140 case "email": 1141 { 1142 ret = TestEmail(objValue, strError); 1143 break; 1144 } 1145 case "lt": 1146 case "lessthan": 1147 { 1148 ret = TestLessThan(objValue, cmdvalue, strError); 1149 break; 1150 } 1151 case "gt": 1152 case "greaterthan": 1153 { 1154 ret = TestGreaterThan(objValue, cmdvalue, strError); 1155 break; 1156 } 1157 case "regexp": 1158 { 1159 ret = TestRegExp(objValue, cmdvalue, strError); 1160 break; 1161 } 1162 case "dontselect": 1163 { 1164 ret = TestDontSelect(objValue, cmdvalue, strError) 1165 break; 1166 } 1167 case "dontselectchk": 1168 { 1169 ret = TestDontSelectChk(objValue, cmdvalue, strError) 1170 break; 1171 } 1172 case "shouldselchk": 1173 { 1174 ret = TestShouldSelectChk(objValue, cmdvalue, strError) 1175 break; 1176 } 1177 case "selmin": 1178 { 1179 ret = TestSelMin(objValue, cmdvalue, strError); 1180 break; 1181 } 1182 case "selmax": 1183 { 1184 ret = TestSelMax(objValue, cmdvalue, strError); 1185 break; 1186 } 1187 case "selone_radio": 1188 case "selone": 1189 { 1190 ret = TestSelectOneRadio(objValue, strError); 1191 break; 1192 } 1193 case "dontselectradio": 1194 { 1195 ret = TestSelectRadio(objValue, cmdvalue, strError, false); 1196 break; 1197 } 1198 case "selectradio": 1199 { 1200 ret = TestSelectRadio(objValue, cmdvalue, strError, true); 1201 break; 1202 } 1203 //Comparisons 1204 case "eqelmnt": 1205 case "ltelmnt": 1206 case "leelmnt": 1207 case "gtelmnt": 1208 case "geelmnt": 1209 case "neelmnt": 1210 { 1211 return TestComparison(objValue, cmdvalue, command, strError); 1212 break; 1213 } 1214 case "req_file": 1215 { 1216 ret = TestRequiredInput(objValue, strError); 1217 break; 1218 } 1219 case "file_extn": 1220 { 1221 ret = TestFileExtension(objValue, cmdvalue, strError); 1222 break; 1223 } 1224 1225 } //switch 1226 return ret; 1227} 1228 1229function VWZ_IsListItemSelected(listname, value) 1230{ 1231 for (var i = 0; i < listname.options.length; i++) 1232 { 1233 if (listname.options[i].selected == true && listname.options[i].value == value) 1234 { 1235 return true; 1236 } 1237 } 1238 return false; 1239} 1240 1241function VWZ_IsChecked(objcheck, value) 1242{ 1243 if (objcheck.length) 1244 { 1245 for (var c = 0; c < objcheck.length; c++) 1246 { 1247 if (objcheck[c].checked == "1" && objcheck[c].value == value) 1248 { 1249 return true; 1250 } 1251 } 1252 } 1253 else 1254 { 1255 if (objcheck.checked == "1") 1256 { 1257 return true; 1258 } 1259 } 1260 return false; 1261} 1262 1263function sfm_str_trim(strIn) 1264{ 1265 return strIn.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 1266} 1267 1268function VWZ_IsEmpty(value) 1269{ 1270 value = sfm_str_trim(value); 1271 return (value.length) == 0 ? true : false; 1272} 1273/* 1274 Copyright (C) 2003-2011 JavaScript-Coder.com . All rights reserved. 1275*/
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.