Jquery submit与javascript submit的区别

10

我想在普通按钮上单击时调用表单验证。 用jQuery做这个似乎很好,但纯javascript却不行。 有人能解释一下jquery的.submit()和javascript的.submit()方法之间的区别吗?或者我做错了什么?

<html>
<head>
<title>Form Submit</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

<script type="text/javascript">
function validateForm(form) {
  if (form.username.value=='') {
    alert('Username missing');
    return false;
  }
  return true;
}
</script>

</head>

<body>

<form action="index.php" name="loginform" method="post" onsubmit="return validateForm(this);">
  <input name="username" placeholder="username" required="required" type="text" />
  <input name="send1" type="button" value="Login1" onclick="$(document.forms.loginform).submit();" />
  <input name="send2" type="button" value="Login2" onclick="document.forms.loginform.submit();" />
  <input name="send3" type="submit" value="Login3" />
  <a href="" onclick="event.preventDefault(); $(document.forms.loginform).submit();"> Login4 </a>
  <a href="" onclick="event.preventDefault(); document.forms.loginform.submit();"> Login5 </a>
</form>

</body>
</html>

onsubmit结果

2个回答

17

DOM 的 submit() 方法不会触发提交事件。而 jQuery 的方法则会。


好的,谢谢解释。因此,上面的脚本应该正确扩展为if (validateForm(document.forms.loginform)) document.forms.loginform.submit(); - Stano
这种情况已经不再存在了。document.formName.submit()(或者 document.querySelector('form[name="formName"]').submit())确实会触发表单提交。 - chiliNUT
3
表单提交,可以。表单提交事件,不行。 - Quentin

0

我知道这是一个老问题,但没有得到很好的回答,所以在这里给你: 在原生 JavaScript 中,submit() DOM 方法用于提交表单,但 JQuery submit() 方法用于触发提交事件。 你需要使用提交事件 示例:

cosnt form = document.querySelecor('form')
form.addEventListener('submit', e => {
    e.preventDefault()
    /* Other stuff */
})

或者

const form = document.qeurySelector('form')
form.onsubmit = e => {
    e.preventDefault()
    /* Other stuff */
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接