Tengo el siguiente código HTML/JS/jQuery. Este código representa un formulario de inicio de sesión que se presenta de manera modal al usuario para permitirle iniciar sesión. El problema es que cuando presiono enter, el formulario no parece ejecutar el evento "onsubmit". Cuando hago clic en el botón como la parte inferior del formulario (que tiene prácticamente el mismo código que el evento onsubmit), funciona perfectamente. Me pregunto si alguien me puede decir por qué este formulario no se envía ... Cualquier ayuda sería apreciada.Formulario no enviado al presionar enter
Código jQuery para ver la sesión modal:
showDivAndFocus('loginModal','loginaccount');
function showDivAndFocus(v,t){
if (api)
if (api.isOpened)
api.close();
api = $('#'+v).overlay({
mask: {color: '#000000'},
top:'0px',
api: true,
autoScrollToActive: false,
autoScrollOffset: 0
}).load();
document.getElementById(t).focus();
}
Código HTML
<div class="modal" id="loginModal">
<h2>User Login</h2>
<br />
<form action="javascript:void(0);" onsubmit="return(doLogin());" name="loginForm" id="loginForm">
<table width="95%" cellpadding="4" cellspacing="4">
<tr>
<td class="regw" align="left"><b>Account Number:</b></td>
<td class="regw" align="left"><input type="text" maxlength="10" size="10" name="loginaccount" id="loginaccount" /></td>
</tr>
<tr>
<td class="regw" align="left"><b>Username:</b></td>
<td class="regw" align="left"><input type="text" maxlength="20" size="20" name="loginusername" id="loginusername" /></td>
</tr>
<tr>
<td class="regw" align="left"><b>Password:</b></td>
<td class="regw" align="left"><input type="password" maxlength="20" size="20" name="loginpassword" id="loginpassword" /></td>
</tr>
<tr>
<td class="regw" align="left"><b>Remember Me:</b></td>
<td class="regw" align="left"><input type="checkbox" name="loginremember" id="loginremember" /></td>
</tr>
<tr><td colspan="2">
<div>
<center>
<table><tr><td width="50" valign="middle">
<div id="loginLoading" style="height:24px;width:24px;"></div>
</td><td>
<button onclick="doLogin();" type="button" class="ok">Submit</button>
</td><td>
<button onclick="api.close();" type="button" class="cancel">Cancel</button>
</td><td width="50"> </td></tr></table>
</center>
</div>
</td></tr>
</table>
</form>
</div>
AJAX llamada
function doLogin(){
var ajax = getXmlObject();
var f = getFormVariables();
var url= '/login.php?f=' + encodeURIComponent(f);
if (ajax.readyState == 4 || ajax.readyState == 0) {
ajax.open("POST", url, true);
ajax.onreadystatechange = function() {
if (ajax.readyState == 4) {
var a = ajax.responseText;
if (a=="OK"){...} else {...}
}
};
ajax.send(null);
}
return false;
}
No creo que esto sea cierto .. El formulario debe enviarse de cualquier manera cuando se presiona enter. Tengo otra forma haciendo prácticamente lo mismo. No se muestra 'modalmente' y esa es la única diferencia real que puedo ver. De seguro, sin embargo, ninguno de los formularios tiene un botón de envío ni eventos onkeyX. – Dutchie432
Iría por el '' porque es más semánticamente correcto. –
@ Dutchie432 - Según tengo entendido (y me encantaría que alguien me corrija si me equivoco), el comportamiento que está obteniendo en la otra forma es erróneo, o de alguna manera el enfoque se transfiere a uno de sus botones de envío antes presionas enter Se supone que los formularios HTML solo se envían mediante la tecla Intro al usar ''. Sin embargo, si realmente tiene foco en un botón, es posible que la tecla Intro lo 'haga clic' por usted. –