提交时Javascript错误重定向

时间:2014-07-25 02:46:02

标签: javascript html forms

这是我的javascript代码,用于检查用户是否输入了用户名和密码字段的值。当我运行它时,它会向我显示正确的警报消息,但即使表单返回false,表单也似乎已提交。有人可以帮助我吗?

<script type="text/javascript">
   function loginValidate(){
       if (document.getElementById("username").value==''){
          window.alert("Please enter your username");
          if (document.getElementById("password").value==''){
              window.alert("Please enter your username and password");
        return false;
          }
       }
       if (document.getElementById("password").value==''){
          window.alert("Please enter your password");
        return false;
       }

    return true;
   }
</script>

<form onsubmit="loginValidate()">
<input type="submit" name="submit" id="submit" value="Login" />
</form

1 个答案:

答案 0 :(得分:2)

您需要将函数返回的值返回给处理程序:

<form onsubmit="return loginValidate()">

此外,不要给任何表单控件提供&#34;提交&#34;的名称或ID。因为它将控件的引用分配给表单的 submit 属性,从而屏蔽表单的 submit 方法(即form.submit个引用控件,因此form.submit()将失败。)

很少需要提交按钮来获取姓名或ID,所以:

<input type="submit" value="Login">

您也可以稍微清理一下逻辑。如果将对表单的引用传递给函数,则更容易获取控件:

<script>
  function loginValidate(form){
    if (form.username.value == ''){
      window.alert("Please enter your username");
      return false;
    }

    if (form.password.value == ''){
       window.alert("Please enter your password");
       return false;
    }
    return true;
  }
</script>

<form onsubmit="return loginValidate(this)">
  <table>
    <tr><td>Username: <td><input type="text" name="username">
    <tr><td>Password: <td><input type="password" name="password">
    <tr><td colspan="2" style="text-align: right;><input type="submit" value="Login">
  </table>
</form

请注意,这会以明文形式发送密码,因此不是特别安全。