2012-07-19 555 views
6

我试图调用表单验证时点击普通按钮。这似乎与jQuery很好,但不是与纯JavaScript。 任何人都可以解释jQuery的.submit()和javascript的.submit()方法之间的区别吗?或者我做错了什么?jquery提交与javascript提交

<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 results

回答

14

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

+0

好的,谢谢你的解释。所以上面的脚本应该正确地扩展为'if(validateForm(document.forms.loginform))document.forms.loginform.submit();' – Stano 2012-07-19 11:00:36

+0

这不再是这种情况。 'document.formName.submit()'(或'document.querySelector('form [name =“formName”]')。submit()')确实会触发表单提交 – chiliNUT 2015-07-30 17:20:54

+2

@chiliNUT - 表单提交,是的。表单提交事件,没有。 – Quentin 2015-07-30 19:39:43