Schlagen „enter“ Post nicht Form in IE8
-
12-09-2019 - |
Frage
Ich bin mit PHP einem Login-Formular zu übergeben, wenn erforderlich, und hier ist der Code:
$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;
Das Problem ist, dass, wenn der Benutzer Treffer in IE8 eingeben, wird das Formular nicht, und der Benutzer gezwungen ist, die Submit-Button zu schlagen.
Wie behebe ich das?
Lösung
Wenn dies ein echtes Problem und Sie können eine andere Lösung nicht finden Sie ein onkeypress
Ereignis für das Formular immer tun können, und prüfen Sie, ob die Enter Taste gedrückt wurde.
EDIT: Hier ist der richtige Code gemäß Maschinen Antwort:
$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: Ihre HTML gültig ist. Versuchen Sie dieser :
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
}
}
Andere Tipps
Achten Sie auch für diesen Spaß Spaß Fehler:
Ich habe auf die harte Tour gelernt, dass, wenn das Formular auf Seite Last display:none
ist, auch wenn Sie es später zeigen, mit Javascript, IE8 noch nicht betreten muss.
wenn jedoch ist es nicht bei Laden der Seite versteckt, und Sie setzen es nach dem display:none
, wie onDOMReady, dann funktioniert es! WTF
Mehr Details und Abhilfe hier: http: // www.thefutureoftheweb.com/blog/submit-a-form-in-ie-with-enter
Simulieren einen Klick
Hier ist, wie ich es in jQuery tun.
// 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();
Hier ist ein Link in Microsoft darauf, die für Sie etwas Licht könnte.
Einen schnellen Lesen der Link könnte es tatsächlich einen Fehler Absenden des Formulars durch die Enter-Taste in Betracht gezogen werden, die ich vermute, würde von Microsoft für IE8 befestigt ist worden.
IE Anomalie bei der Verwendung der Enter-Taste ein Formular einreichen
Edit:
Dies wurde entfernt, aber eine andere Link es wieder Belag (unten auf der Seite), die a href <= "http://blogs.msdn.com/b/ie/archive/2008/12/17/ie-december-out-of-band-release.aspx "rel =" nofollow noreferrer "> definiert sie und erklärt den Fehler im IE Blog auf 18. Dezember 2008 .
Haben Sie eine Öffnung Formular-Tag haben, die gerade aus dem Code-Schnipsel weggelassen wurde?
Das action
Attribut auf dem form
Elemente wird durch die HTML-Spezifikation erforderlich. Vielleicht besser, es wird funktionieren.
Ich konnte dies auch mit einer Klage und Verfahren reproduzieren. Gezupft alle anderen Codes auf der Seite und es wird immer noch produziert. Allerdings habe ich Arbeit gesehen Formen in IE8 mit action = „“