现在有两个页面,一个index.html<html> 
<body>  
<script language="JavaScript" src="test.js"> 
</script> <input type="text" id="username"><input type="button" value="注册" onclick="checkall()">
</body> 
</html> 
另外个test.jsfunction checkusername(){
    var str=document.getElementById("username").value;
    var reg=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._-]){4,19}$/;
    if(!reg.checkusername(str)){
        return false;
    }
}function checkall(){
if (checkusername()=false);
{
alert ("用户名错误")
}

}
是这样的,检查表单页面不光有checkusername,还有checkpassword之类的,所以想用checkall来统一管理,可惜好像取不到checkusername的返回值,有啥办法或者思路么。。

解决方案 »

  1.   

    应该取的到的,加个return true试试function checkusername(){
        var str=document.getElementById("username").value;
        var reg=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._-]){4,19}$/;
        if(!reg.checkusername(str)){
            return false;
        }
        return true;
    }
      

  2.   


    function checkusername(){
        var str=document.getElementById("username").value;
        var reg=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._-]){4,19}$/;
        if(reg.test(str)){
            return true;
        }
     return false;
    }
    //return function checkall(){
    if (!checkusername());
        {
        alert ("用户名错误")
        }
        
    }
      

  3.   

    哦,看到了,这里应该是两个"=="
    if (checkusername()==false);
      

  4.   


    楼主,你写错代码了。是 == ,不是 =
    正确如下:if (checkusername() == false);//注意,是 == 两个。一个 = 号,表示赋值!!!
        {
        alert ("用户名错误")
        }
      

  5.   

    加上=还是不行,报错代码为test.js第6行第5字符,对象不支持此属性或方法
      

  6.   


    if(!reg.checkusername(str)){
            return false;
        }
    上面的代码不是reg.test()?
      

  7.   

    应该这么写:function checkusername(){
        var str=document.getElementById("username").value;
        var reg=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._-]){4,19}$/;
        if(!reg.test(str)){
            return false;
        }
         return true;
    }
      

  8.   


    啥意思?为啥要是reg.test()?
      

  9.   


    function checkall(){
    if (checkusername()=false);//看看这里。楼主,怎么多出一个 ; 分号来!!!去掉
        {
        alert ("用户名错误")
        }
        
    }代码如下function checkall(){
    if (!checkusername())  //这里去掉了分号
        {
        alert ("用户名错误")
        }
        
    }
      

  10.   


    function checkusername(){
        var str=document.getElementById("username").value;
        var reg=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._-]){4,19}$/;
        if(str.match (reg )==null ){
            return false;
        }
    }function checkall(){
    if (checkusername()==false);
        {
        alert ("用户名错误")
        }
        
    }
    本机测试通过!
      

  11.   

    reg.test(str);//测试字符串str,是否匹配正则reg
      

  12.   


    请去看看js的正则表达式的应用。你就明白了。不仅仅有test(),还有好多正则表达式方法,很有用的。
      

  13.   

    LS你别瞎搞了好么,这跟;没关系,问题解决了,确实是reg.test(),不过为啥呢
      

  14.   

    两种方法:
    test 方法
    返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。rgexp.test(str) match 方法
    使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。stringObj.match(rgExp) 
    如果 match 方法没有找到匹配,返回 null。如果找到匹配返回一个数组并且更新全局 RegExp 对象的属性以反映匹配结果。
      

  15.   


    我说明一下:上面的代码,正则那块我没看,我想你能写js,起码那个正则应该是从网上抄来的,应该可以用。所以没看见那个BUG。你居然不知道正则表达式里面的test()。那么match()呢?search()呢?
    其次,你的代码function checkall(){
    if (checkusername()=false);//这里的分号 ; ,你让大家说说,你的这个if写的对么?(先不说你写了一个等号 = ,就是你写了两个等号 == ,你这里也是错误的。你这里的分号 ; 代表一个js语句的解释完毕。你一定会说,它也执行了后面大括号里面的 alert ("用户名错误") 啊?! 是的。是执行了。你可以试试,把你的if语句去掉,只剩下大括号里面的 alert ("用户名错误") ,你看看执行不?
    说我瞎搞,自己先搞好了,再说我好么?
        {
        alert ("用户名错误")
        }
        
    }