我正在尝试使用锚标记提交表单。但是,验证功能似乎没有被触发。我已经用提交按钮替换了锚点,现在它可以工作了。不过,我很好奇为什么以前的锚链接不起作用。
代码是
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函数。锚有什么问题?
由于
答案 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();
});