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

posted @ 2014-09-03 16:29  nvlee  阅读(434)  评论(0)    收藏  举报