function checkForm( )
{
var a=document.userform.txtName.value;
if(a.length!=0)
{
for(i=0;i<a.length;i++)
{
var b=a.substring(i,1);
if(  !((b>=0&&b<=9)||(b>='a'&&b<='z')) )
{
alert("包含非法字符");
return false;
}
}
}
else
{
alert("请输入名字");
}
return true; 我这样写的话输入小写字母是对了 输入数字也是对的 输入 小写字母+数字也是对的 但是输入数字+字母就是错了 通过不了,求真解!

解决方案 »

  1.   


    if(!(/^[a-z0-9]+$/ig).test(a)) { //如果要的是只能包含数字或字母的
    return false;
    }

    if(!(/^(?![a-z]+$)(?![0-9]+$)[a-z0-9]+$/ig).test(a))  { //如果要的是只能包含数字和字母,且都需要存在的话
    return false;
    }这2种根据你的需要选择一个吧
      

  2.   

    使用正则
    在提交的时候判断s="xxxxxx"
    if(/^[a-z0-9]/.test(s))
    alert("非法")
      

  3.   

    问题在于
    var b=a.substring(i,1);
    原因很简单
    你先看下substring的功能
    至于比较的结果为什么开始对我就不解释了。你调试下就明白了
            if(a.length!=0)
            {
                for(i=0;i<a.length;i++)
                {
                    var b=a.substring(i,1);
    alert(b);  //加上他,你看看你的b是每一个字符吗呵呵~
                    if(  !((b>=0&&b<=9)||(b>='a'&&b<='z')) )
                    {
                        alert("包含非法字符");
                        return false;
                    }
                }
            }
            else
            {    
                alert("请输入名字");
            }
            return true;    
      

  4.   

    stringObject.substring(start,stop)
    start  必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
    stop  可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。substring() 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。如果参数 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。用函数的时候一定要弄清楚。这个和其他程序设计语言的功能未必一样~