我正在尝试使用 anchor 标记提交表单。但是,验证功能似乎没有被触发。我已经用提交按钮替换了 anchor ,现在它可以工作了。不过,我很好奇为什么之前的 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" />
在不更改验证函数和表单标记的情况下,可以正确调用验证函数。 anchor 出了什么问题?
谢谢
最佳答案
这是预期的行为。
来自the MDN on the submit function :
The form's onsubmit event handler (for example, onsubmit="return false;") will not be triggered when invoking this method from Gecko-based applications. In general, it is not guaranteed to be invoked by HTML user agents.
如果您想验证链接中的代码,只需显式调用 validate
函数即可:
<a id=subbut href="#" class="submit_button">Submit</a>
...
document.getElementById('subbut').addEventListener('click', function(){
if (validate()) document.getElementById('myForm').submit();
});
关于javascript - 使用 anchor 提交时表单未验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19881721/