2012-07-19 19 views
6

Estoy tratando de invocar una validación de formulario al hacer clic en el botón normal. Esto parece funcionar bien con jQuery, pero no con javascript simple. ¿Alguien puede explicar esta diferencia entre los métodos de jquery's .submit() y javascript's .submit()? ¿O qué estoy haciendo mal?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

Respuesta

14

El método DOM submit() no desencadena presentar eventos. jQuery lo hace.

+0

Ok, gracias por su explicación. Por lo tanto, el script anterior debe extenderse correctamente a 'if (validateForm (document.forms.loginform)) document.forms.loginform.submit();' – Stano

+0

Esto ya no es el caso. 'document.formName.submit()' (o 'document.querySelector ('form [name =" formName "]') submit()' activará un envío de formulario – chiliNUT

+2

@chiliNUT - Envío de formulario, sí. Evento de envío de formulario, no. – Quentin

Cuestiones relacionadas