Javascript 使用锚点提交时未验证表单

Javascript 使用锚点提交时未验证表单,javascript,validation,anchor,Javascript,Validation,Anchor,我正在尝试使用锚标记提交表单。但是,验证函数似乎没有被触发。我已经用一个提交按钮替换了锚,现在它可以工作了。尽管如此,我还是很好奇为什么之前的锚链接没有起作用 代码是 function validate() { /* validation code here */ return status; } <form id="myForm" action="/response_page.php" onsubmit="return validate();" method="POST">

我正在尝试使用锚标记提交表单。但是,验证函数似乎没有被触发。我已经用一个提交按钮替换了锚,现在它可以工作了。尽管如此,我还是很好奇为什么之前的锚链接没有起作用

代码是

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\u page.php*。但当替换为“提交”按钮时

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

在不更改validate函数和form标记的情况下,将正确调用validate函数。锚怎么了


谢谢

这是预期的行为

发件人:

表单的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();
});

...
document.getElementById('subbut')。addEventListener('click',function(){
if(validate())document.getElementById('myForm').submit();
});

是!成功了!但是validate()函数不会被调用两次吗?第二次是从表单的onsubmit事件调用的?实际上问题在于validate函数。正在调用submit事件,但当从anchorstatus调用submit()时,表单的onsubmit事件中绕过了validate函数=true或false,具体取决于是否满足某些表单验证。验证代码不再包括在内,因为它可以是任何类型的验证