<form action="" method="post" onsubmit="return check();">
<input name="email" id="email" type="text" class="regbox" onblur="checkemail();" />
<input name="pwd" id="pwd" type="text" class="regbox" onblur="checkpwd();" />
<input name="cname" id="cname" type="text" class="regbox" onblur="checkcname();" />
<input name="checkcode" id="checkcode" type="text" class="regbox" onblur="checkckcode();" />
</form>function checkemail(){
检验未通过 return false;
通过没有值返回
}
function checkpwd(){
检验未通过 return false;
通过没有值返回
}上面的是代码,检验是否正确的代码比较长,未贴出,我的问题是这样的:在每个文本框失去焦点的时候检测一下其中的值是否正确,正确就返回 true,不正确就返回false,这都没问题,问题在与表单提交时我想把所有文本框的值再检测一遍,我一开始认为单项文本框检测里面都有return false,可以阻止表单的提交,所以我是这样写的function check(){
  checkemail();
  checkpwd();
  return true;
}但是事实上checkemail()里面的return false并没有生效,在检测一遍后即使有错误也还是提交了表单,而在每个单项检测的前面加上return,表单提交时只有第一个单项检测不通过时才能阻止表单的提交,而后面的单项检测还是不能阻止表单的提交,请问我的check()这个函数应该怎么写?

解决方案 »

  1.   

    function check(){
      return checkemail();
      return checkpwd();
      return true;
    }
      

  2.   

    应该用if else if 来操作。
      

  3.   

    function check(){
      checkemail()!==false && checkpwd()!==false;
    }
      

  4.   

    function check(){
      var flag1,flag2;
      flag1=flag2=true;
      
      flag1=checkemail();
      flag2=checkpwd();  if(flag1 && flag2)
          return true;
      else
          reutrn false;
    }
      

  5.   

    少了一个return,应该是这样:
    function check(){
        return checkemail()!==false && checkpwd()!==false;
    }
      

  6.   

    首先你必须要理解,return的真正含义,你在checkemail()中虽然return了一个布尔值,但从表单看来,你什么没有做,因此无论函数返回的值是什么,表单一样会提交。正确的做法是将return值直接放在onblur绑定处,即onblur =  "return checkemail()?true:false;"
      

  7.   

    笨人笨办法,我用了一个最笨的办法,再定义函数中返回true或false,先把所有自定义函数运行一遍,在用IF语句判断函数返回的是true还是false,是false的情况直接return false中断表单,很笨,,,
      

  8.   

    笨人笨办法,我用了一个最笨的办法,再定义函数中返回true或false,先把所有自定义函数运行一遍,在用IF语句判断函数返回的是true还是false,是false的情况直接return false中断表单,很笨,,,