使用Anchor提交时表单不验证

时间:2013-11-09 18:52:21

标签: javascript validation anchor

我正在尝试使用锚标记提交表单。但是,验证功能似乎没有被触发。我已经用提交按钮替换了锚点,现在它可以工作了。不过,我很好奇为什么以前的锚链接不起作用。

代码是

function validate() {

/* validation code here */

return status;

}

<form id="myForm" action="/response_page.php" onsubmit="return validate();" method="POST">

<!-- form elements here -->

<a href="#" class="submit_button" onclick="document.getElementById('myForm').submit();">Submit</a>

</form> 

使用此代码,单击该链接将直接转到* response_page.php *。但是当用提交按钮替换时

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

如果不更改validate函数和表单标记,则会正确调用validate函数。锚有什么问题?

由于

1 个答案:

答案 0 :(得分:2)

这是预期的行为。

来自the MDN on the submit function

  

表单的onsubmit事件处理程序(例如,onsubmit =“return   false;“)从调用此方法时不会被触发   基于Gecko的应用程序。一般来说,不能保证   由HTML用户代理调用。

如果您想验证链接中的代码,只需明确调用validate函数:

<a id=subbut href="#" class="submit_button">Submit</a>
...
document.getElementById('subbut').addEventListener('click', function(){
    if (validate()) document.getElementById('myForm').submit();
});