PageSourceSearch

https://hkacs.org.hk/js/validate_en.js

js hkacs.org.hk collected 2026-10-02 06:36:53 UTC 6,046 bytes, 163 lines download raw bytes

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.