尽管在onsubmit()中返回false,表单仍然提交

时间:2014-04-20 12:11:07

标签: javascript html forms

我正在处理html表单 我的HTML代码是

<form onsubmit="check_credentials()" action="index.php/welcome/add" method="post">
      <div  class="sign_up_entry"> <span>Email Address:</span> <input type="text" id="signup_email" name="email" class="form-control" onfocusout="check_credentials_email()"/></div>
      <div  class="sign_up_entry"> <span>Username:</span> <input type="text" id="signup_username" name="username" class="form-control" onfocusout="check_credentials_username()"/></div>
      <div  class="sign_up_entry"> <span>Password:</span> <input type="password" id="signup_password" name="password" class="form-control"/></div>
      <button value="Sign Up" type="submit" class="btn">Sign Up</button>
</form>

和javascript是

function check_credentials()
{
   return false;
}

但我的表单总是被提交,问题是什么?

1 个答案:

答案 0 :(得分:4)

您必须从事件处理函数返回false,但您没有返回任何内容。

您的事件处理函数正在调用check_credentials,对其返回值不执行任何操作,然后自行返回任何内容。

onsubmit="return check_credentials()" 

通常,最好避免使用内部事件处理程序属性,unobtrusively绑定事件处理程序。

e.g。

document.querySelector('form').addEventListener('submit', check_credentials);

function check_credentials(evt) {
    evt.preventDefault();
}