Schlagen Sie "enter" nicht-post-Formular in IE8
Ich bin mit PHP zu übergeben, login-Formular, 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, ist, dass, wenn der Benutzer trifft geben Sie in IE8, wird das Formular nicht senden, und der Benutzer ist gezwungen, Sie zu schlagen, die senden-Schaltfläche.
Wie kann ich das beheben?
- Es ist sogar noch schlimmer: Als der jQuery 1.4, meine Zuhörer an das Formular gebunden ist
submit
event wird ausgeführt, aber obwohl es ein true zurück, das senden klappt nicht! Dies ist Fatal, weil dieser listener deaktiviert anschließend die form zu verhindern, dass doppelte Vorlage, so dass IE-Benutzer, die EINGABETASTE zu drücken sind dann nicht in der Lage zu senden an alle. Meine Lösung ist, dass für die IE-Benutzer, wenn Sie drücken Sie die EINGABETASTE in einem Formular input, den ich zu fangen, die false zurück - nichts zu tun. Sie muss klicken Sie auf Einreichen. (Messing mit Sichtbarkeit ist keine option, da hier die form geladen wird via AJAX.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn das ist ein echtes problem, und Sie können nicht eine andere Lösung finden, können Sie immer ein
onkeypress
- Ereignis für das Formular und überprüfen Sie, ob der Enter - Taste gedrückt wurde.BEARBEITEN:
Hier ist der richtige code nach Maschine Antwort:
EDIT 2:
Dein HTML-Code ist gültig.
Versuchen diese:
Auch aufpassen, für diese fun-bug:
Habe ich gelernt die harte Weise, dass, wenn Ihre form ist
display:none
an-Seite laden, auch wenn man es später mit Javascript, IE8 immer noch nicht reichen auf Sie die EINGABETASTE.Allerdings, wenn es nicht versteckt auf die Seite laden, und legen Sie es auf
display:none
nach, wie onDOMReady, dann funktioniert es! WTFMehr details und workaround hier: http://www.thefutureoftheweb.com/blog/submit-a-form-in-ie-with-enter
display:none
und IE8 nicht....Simulieren klicken
Hier ist, wie ich es in jQuery.
Hier ist ein link von Microsoft, das könnte etwas Licht für Sie.
Einen schnellen Lesen von dem link, es könnte in der Tat als ein Fehler beim übermitteln des Formulars, indem Sie die Enter-Taste, wie ich vermute, würde der behoben wurde von Microsoft für den IE8.
IE Anomalie bei der Verwendung der enter-Taste, um ein Formular Absenden
Edit:
Dieser wurde jetzt entfernt, aber ein anderer link Abdeckung wieder (unten auf der Seite), die es definiert und erklärt den Fehler im IE-Blog on Dezember 18th 2008.
Haben Sie eine öffnung form-tag, das wurde einfach weggelassen aus dem code-snippet?
Den
action
- Attribut auf dieform
element benötigt wird, indem der HTML-Spezifikation. Vielleicht klappt es besser.War ich in der Lage zu reproduzieren, dies auch mit einer Aktion und Methode. Entfernt alle anderen code auf der Seite und es wird immer noch produziert. Allerdings habe ich gesehen, wie Formulare funktionieren im IE8 mit action=""