Golpear “enter” no publica forma en IE8
-
12-09-2019 - |
Pregunta
Estoy usando PHP para pasar un formulario de acceso cuando sea necesario, y aquí está el código:
$htmlForm = '<form id="frmlogin">'.'<label>';
switch(LOGIN_METHOD)
{
case 'both':
$htmlForm .= $ACL_LANG['USERNAME'].'/'.$ACL_LANG['EMAIL'];
break;
case 'email':
$htmlForm .= $ACL_LANG['EMAIL'];
break;
default:
$htmlForm .= $ACL_LANG['USERNAME'];
break;
}
$htmlForm .= ':</label>'.
'<input type="text" name="u" id="u" class="textfield" />'.
'<label>'.$ACL_LANG['PASSWORD'].'</label>'.
'<input type="password" name="p" id="p" class="textfield" />'.
'<center><input type="submit" name="btn" id="btn" class="buttonfield" value="Sign in to extranet" /></center>'.
'</form>';
return $htmlForm;
El problema es, es que cuando los accesos de los usuarios entran en IE8, la forma no presentara, y el usuario se ve obligado a golpear el botón de enviar.
¿Cómo rectificar esto?
Solución
Si esto es un problema real y no puede encontrar otra solución que puede hacer siempre un acontecimiento onkeypress
para la forma y comprobar si el Enter se ha pulsado.
EDIT: Aquí está el código correcto de acuerdo a la respuesta de la máquina:
$htmlForm .= ':<form><label>'.$ACL_LANG['USERNAME'].'</label>'.
'<input type="text" name="u" id="u" class="textfield" />'.
'<label>'.$ACL_LANG['PASSWORD'].'</label>'.
'<input type="password" name="p" id="p" class="textfield" />'.
'<center><input type="submit" name="btn" id="btn" class="buttonfield" value="Sign in to extranet" /></center>'.
'</form>';
EDIT 2: Su HTML es válido. Prueba a este :
function checkEnter(e) { //e is event object passed from function invocation
var characterCode //literal character code will be stored in this variable
if (e && e.which) { //if which property of event object is supported (NN4)
e = e
characterCode = e.which //character code is contained in NN4's which property
}
else {
e = event
characterCode = e.keyCode //character code is contained in IE's keyCode property
}
if (characterCode == 13) { //if generated character code is equal to ascii 13 (if enter key)
document.forms[0].submit() //submit the form
return false
}
else {
return true
}
}
Otros consejos
También esté atento a este divertido insecto divertido:
He aprendido de la manera difícil que si su forma es display:none
en la carga de la página, incluso si se lo enseñas más tarde con Javascript, IE8 todavía no se somete a entrar.
Sin embargo, si no está oculta en carga de la página, y se configura a display:none
después, como onDOMReady, entonces funciona! WTF
Información adicional y solución aquí: http: // www.thefutureoftheweb.com/blog/submit-a-form-in-ie-with-enter
Simular un click
Así es como lo hago en jQuery.
// Recreating normal browser behavior in Javascript. Thank you, Microsoft.
jQuery.fn.handle_enter_keypress = function() {
if ($.browser.msie){
$(this).find('input').keypress(function(e){
// If the key pressed was enter
if (e.which == '13') {
$(this).closest('form')
.find('button[type=submit],input[type=submit]')
.filter(':first').click();
}
});
}
}
$('form').handle_enter_keypress();
Aquí hay un enlace en Microsoft en él que podría arrojar alguna luz para usted.
Tomar una lectura rápida del enlace que en realidad podría ser considerado un error de enviar el formulario de la tecla Intro, que supongo que hubiera sido fijado por Microsoft para IE8.
IE anomalía cuando se utiliza la tecla enter para enviar un formulario
Editar:
Esto ahora se ha eliminado pero otro enlace cubriéndola de nuevo (parte inferior de la página) que definido y explicar el error en el IE Blog el 18 de diciembre 2008 .
¿Tiene una etiqueta de forma que se acaba de apertura omitido de su fragmento de código?
El atributo action
en el elemento form
es requerido por la especificación HTML. Tal vez que va a trabajar mejor.
Yo era capaz de reproducir este, así como con una acción y método. Despojado de todo otro tipo de código en la página y que todavía se produce. formas sin embargo, he visto el trabajo en IE8 con action = ""