1// Check validation in a form 2// Input : form 3// DefineArray: vad_type ('fill','date','double','int','length','same'), 4// vad_type, vad_type_name, 5// vad_int, vad_int_name, 6// vad_double, vad_double_name, 7// vad_length, vad_length_name 8function validate(fm) { 9 var err_msg = ''; 10 var err_msg2 = ''; 11 var err_internal = ''; 12 for (i = 0; i < vad_type.length; i++) { 13 err_msg = ''; 14 if (vad_type[i] == 'fill') { 15 if (vad_fill.length != vad_fill_name.length) { err_internal += vad_type[i] + '\n'; continue; } 16 for (j = 0; j < vad_fill.length; j++) { 17 //alert(vad_fill[j] + '=' + fm[vad_fill[j]].value); 18 if (fm[vad_fill[j]].value == '') err_msg += '- ' + vad_fill_name[j] + '\n'; 19 } 20 if (err_msg.length > 0) err_msg2 += 'You must enter following field(s):\n' + err_msg + '\n'; 21 } 22 else if (vad_type[i] == 'double') { 23 if (vad_double.length != vad_double_name.length) { err_internal += vad_type[i] + '\n'; continue; } 24 for (j = 0; j < vad_double.length; j++) { 25 if (!isDouble(fm[vad_double[j]].value)) err_msg += '- ' + vad_double_name[j] + '\n'; 26 } 27 if (err_msg.length > 0) err_msg2 += 'You must enter number in following field(s):\n' + err_msg + '\n'; 28 } 29 else if (vad_type[i] == 'int') { 30 if (vad_int.length != vad_int_name.length) { err_internal += vad_type[i] + '\n'; continue; } 31 for (j = 0; j < vad_int.length; j++) { 32 if (!isInt(fm[vad_int[j]].value)) err_msg += '- ' + vad_int_name[j] + '\n'; 33 } 34 if (err_msg.length > 0) err_msg2 += 'You must enter integer in following field(s):\n' + err_msg + '\n'; 35 } 36 else if (vad_type[i] == 'date') { 37 if ((vad_date.length/3) != vad_date_name.length) { err_internal += vad_type[i] + '\n'; continue; } 38 for (j = 0; j < vad_date.length; j=j+3) { 39 if (!checkDate(fm[vad_date[j]].value,fm[vad_date[j+1]].value,fm[vad_date[j+2]].value)) { 40 err_msg += '- ' + vad_date_name[j/3] + '\n'; 41 } 42 } 43 if (err_msg.length > 0) err_msg2 += 'The following date(s) is/are invalid:\n' + err_msg + '\n'; 44 } 45 else if (vad_type[i] == 'length') { 46 if ((vad_length.length/2) != vad_length_name.length) { err_internal += vad_type[i] + '\n'; continue; } 47 for (j = 0; j < vad_length.length; j=j+2) { 48 if (fm[vad_length[j]].value.length > eval(vad_length[j+1])) { 49 err_msg += '- ' + vad_length_name[j/2] + ' (Max. ' + vad_length[j+1] + ' characters)\n'; 50 } 51 } 52 if (err_msg.length > 0) err_msg2 += 'Maximum length exceeds in following field(s):\n' + err_msg + '\n'; 53 } 54 else if (vad_type[i] == 'same') { 55 if (vad_same.length != vad_same_name.length) { err_internal += vad_type[i] + '\n'; continue; } 56 for (j = 0; j < vad_same.length; j=j+2) { 57 if (fm[vad_same[j]].value != fm[vad_same[j+1]].value) { 58 err_msg += '- ' + vad_same_name[j] + ' & ' + vad_same_name[j+1] + '\n'; 59 } 60 } 61 if (err_msg.length > 0) err_msg2 += 'Following fields must be the same:\n' + err_msg + '\n'; 62 } 63 else if (vad_type[i] == 'compare') { 64 if (vad_compare.length/2 != vad_compare_name.length) { err_internal += vad_type[i] + '\n'; continue; } 65 for (j = 0; j < vad_compare.length; j=j+2) { 66 if (fm[vad_compare[j]].value != '' && isDouble(fm[vad_compare[j]].value)) { 67 if (!eval(fm[vad_compare[j]].value + vad_compare[j+1])) { 68 err_msg += '- ' + vad_compare_name[j/2] + ' ' + vad_compare[j+1] + '\n'; 69 } 70 } 71 } 72 if (err_msg.length > 0) err_msg2 += 'Following condition(s) must be maintain:\n' + err_msg + '\n'; 73 } 74 else if (vad_type[i] == 'email') { 75 if (vad_email.length != vad_email_name.length) { err_internal += vad_type[i] + '\n'; continue; } 76 for (j = 0; j < vad_email.length; j++) { 77 if (!isEmail(fm[vad_email[j]].value)) err_msg += '- ' + vad_email_name[j] + '\n'; 78 } 79 if (err_msg.length > 0) err_msg2 += 'Email in following field(s) is/are invalid:\n' + err_msg + '\n'; 80 } 81 else if (vad_type[i] == 'link') { 82 if (vad_link.length != vad_link_name.length) { err_internal += vad_type[i] + '\n'; continue; } 83 for (j = 0; j < vad_link.length; j++) { 84 if (!isLink(fm[vad_link[j]].value)) err_msg += '- ' + vad_link_name[j] + '\n'; 85 } 86 if (err_msg.length > 0) err_msg2 += 'Link in following field(s) is/are invalid:\n' + err_msg + '\n'; 87 }else if (vad_type[i] == 'other') { 88 if (!vad_other(fm)) err_msg2 += vad_other_name[0] + '\n'; 89 } 90 } 91 if (err_internal.length > 0) { 92 alert('Error validate():\n' + err_internal + '(Array length not match)'); 93 return false;
94 } 95 if (err_msg2.length > 0) { 96 alert(err_msg2); 97 return false; 98 } 99 return true; 100} 101function isDouble(val) { 102 var standard_num = ".0123456789"; 103 var count_comma = 0; 104 for (var i = 0; i < val.length; i++) { 105 if (standard_num.indexOf(val.substring(i, i + 1)) < 0) return false; 106 if (val.substring(i, i + 1) == ".") count_comma++; 107 if (count_comma > 1) return false; 108 } 109 return true; 110} 111function isInt(val) { 112 var standard_num = "0123456789"; 113 for (var i = 0; i < val.length; i++) { 114 if (standard_num.indexOf(val.substring(i, i + 1)) < 0) return false; 115 } 116 return true; 117} 118function checkDate (yyyy, mm, dd) { 119 if (yyyy == '' && mm == '' && dd == '') return true; 120 if (mm < 1 || mm > 12 || dd < 1 || dd > 31) return false; 121 if (mm==1 || mm==3 || mm==5 || mm==7 || mm==8 || mm==10 || mm==12) { 122 if (dd > 31) return false; 123 } else if (mm==4 || mm==6 || mm==9 || mm==11) { 124 if (dd > 30) return false; 125 } else if (mm=2 && yyyy%4 == 0) { 126 if (dd > 29) return false; 127 } else if (mm=2) { 128 if (dd > 28) return false; 129 } else { 130 return false; 131 } 132 return true; 133} 134function isEmail(e) { 135 if (e == '') return true; 136 var pos = e.indexOf("@"); 137 if (pos == -1 || pos == 0) { 138 return false; 139 } else { 140 e = e.substring(pos+1); 141 pos = e.indexOf("."); 142 if (pos == -1 || pos == 0 || pos == e.length - 1) { 143 return false; 144 } 145 } 146 return true; 147} 148function isLink(e) { 149 if (e == '') return true; 150 var pos = e.indexOf("http"); 151 if (pos == -1) { 152 return false; 153 } 154 return true; 155} 156function checkVal( str ) { 157 var regExp = /^[a-zA-Z|\s]+$/; 158 if (regExp.test(str)) 159 return true; 160 else 161 return false; 162} 163// validate(fm) END
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.