js控制输入范围
日常应用中,我们经常限制输入框的输入范围。前端和后端都可以实现,很明显从语言擅长和效率等多个方面,选择用javascript来做这类表单验证和检查的事情。
实例一(限制dhcp服务器分配IP地址末位是10~250)
1 function check_num(num) 2 { 3 var num_length = num.length; 4 var num_letters = "1234567890"; // 输入字符集 5 if( (num.substring(0,1)=="0") && (num.length!=1) ) // 排除09, 099之类的情况 6 { 7 return false; 8 } 9 for (p=0; p < num_length; p++) // 检查是否num的每一位都是数字 10 { 11 var num_char = num.charAt(p); 12 if ( num_letters.indexOf(num_char) == -1) 13 { 14 return false; 15 } 16 } 17 if ( num < 10 || num > 250 ) // 判断范围 18 { 19 return false; 20 } 21 return true; 22 }
实例二(检查无线密码输入范围是8-63个ASCII码字符(不包括单引号和双引号)或8-64个十六进制字符)
1 function check_pwd_char(num) 2 { 3 var num_length=num.length; 4 5 if ( num_length > 8 && num_length < 63 ) // 作为ASCII字符处理的情况 6 { 7 var num_letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890`~!@#$^&*()-=_+[]{};:\\|/?.,<>/% "; 8 for (p=0; p < num_length; p++) 9 { 10 var num_char = num.charAt(p); 11 if (num_letters.indexOf(num_char) == -1) 12 { 13 return false; 14 } 15 } 16 } 17 if ( 64 == num_length ) 18 { 19 var hex_num="1234567890abcdefABCDEF"; // 作为十六进制处理的情况 20 for (p=0; p < num_length; p++) 21 { 22 var num_char = num.charAt(p); 23 if (hex_num.indexOf(num_char) == -1) 24 { 25 return false; 26 } 27 } 28 } 29 return true; 30 }
总结:
1,基本思路,先定义字符集,再判断是否为非法字符,最后判断范围;
2,相关属性和函数:
str.length: 返回字符串的长度,获取或设置数组的元素的个数
substring( i, j ):提取介于两个下标直接的字符
charAt(): 获取指定位置的字符
indexOf(): 返回一个字符(串)在另一个字符中首次出现的位置,若没找到返回-1
浙公网安备 33010602011771号