2012-07-19 25 views
6

Sto tentando di richiamare una convalida del modulo quando si fa clic sul pulsante normale. Questo sembra funzionare bene con jQuery, ma non con un semplice javascript. Qualcuno può spiegare questa differenza tra i metodi di jquery .submit() e javascript .submit()? O cosa sto sbagliando?Jquery submit vs. 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 results

risposta

14

Il metodo DOM submit() non attiva presentare eventi. jQuery lo fa.

+0

Ok, grazie per la spiegazione. Quindi lo script sopra dovrebbe essere correttamente esteso a 'if (validateForm (document.forms.loginform)) document.forms.loginform.submit();' – Stano

+0

Questo non è più il caso. 'document.formName.submit()' (o 'document.querySelector ('form [nome =" formName "]'). submit()') innescherà effettivamente una sottomissione modulo – chiliNUT

+2

@chiliNUT - Invio modulo, sì. Modulo invia evento, no. – Quentin

Problemi correlati