Im IE8 enter-Taste in einem Formular funktioniert nicht
Ich habe ein problem, dass im IE8 das eingeben funktioniert nicht auf "Formular senden". Ich habe generiert eine test-Seite zu setzen dieses problem. Es scheint, dass die Anzeige des Formulars in der onLoad
- Funktion deaktiviert, die Ergebnisse, die enter - Taste nicht auslösen, reichen nicht mehr. Ist das ein bug im IE8 oder ist es eine Frage der Sicherheit?
Den code zu reproduzieren ist:
JS:
onload = function() {
document.getElementById('test').style.display = 'block';
}
CSS:
#test {
display: none;
}
HTML:
<form id="test" method="get" action="javascript:alert('woei!')">
<input type="text" name="user" value="">
<input type="password" name="pw" value="">
<input type="submit" value="submit" id="submit">
</form>
- +1 für Klarheit.. eine seltene Sache in letzter Zeit.
- dupe: stackoverflow.com/questions/964734/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich gefunden, eine richtige Lösung und wollte es zu teilen mit u guys.
Anstatt
<input type="submit...>
verwenden<button type="submit"...>
.Diese tun genau das gleiche in den anderen Browsern (IE6-7, FF3) UND funktioniert im IE8. 🙂
Oben ist eine passende Lösung. Ref: Also Nicht Absenden meines Formulars auf Eingabe drücken der enter-Taste?
Ich denke, alles ist viel komplizierter, als Sie denken...
als eine form der display-Wert auf none gesetzt ist, mit einer css-Klasse oder einfach nur mit einem style-Attribut auf Seite inital, das schlagen der enter-Taste in einem Textfeld funktioniert nicht nur, wenn Sie mehr als ein input-Feld mit text geben... wenn Sie ein Textfeld mit der es funktioniert.. wenn Sie mehr als eine haben, es hat nicht Feuer Formular...
Hier machte ich eine demo...
Funktioniert Einwandfrei (Normale Form)
http://yasinergul.com/stackoverflow/ie8-enter-key-bug/one.html
Funktioniert (Form versteckt & wieder sichtbar, aber es ist mit einem text-input)
http://yasinergul.com/stackoverflow/ie8-enter-key-bug/two.html
Nicht Funktioniert (Form versteckt & wieder sichtbar, aber es ist mit zwei text-input)
http://yasinergul.com/stackoverflow/ie8-enter-key-bug/three.html
ich denke, der beste Ansatz ist, zu geben .hidden class des Objekts, aber nicht die Einstellung display:none für diese css-Selektor. Sie können es ausgeblendet mit jquery wie
als die Seite geladen wird das Formular angezeigt wird für Millisekunden, wird aber im verborgenen nach jquery funktioniert...
Kann ich nicht sagen, ob es ein Fehler ist genau, aber ich kann bestätigen, dass das Verhalten, das Sie Bericht hat sich verändert im IE 8... und ich denke, es ist wahrscheinlich ein Fehler, nicht um eine absichtliche Veränderung.
Wenn das Formular mit CSS display:none die Standard-submit-button-Verhalten funktioniert nicht.
Anderen Browsern einschließlich IE 7 (oder sogar IE 8 mit IE-7-Kompatibilitätsmodus) haben keine Probleme.
Habe ich gearbeitet, um das problem selbst, indem Sie einfach mit height:0px; im CSS, dann javascript festlegen der entsprechenden Höhe, wenn ich will, um zu zeigen, das Formular. Mit der Höhe statt, die Standard-Eingabe-Taste abschicken Verhalten scheint normal zu funktionieren.
Alte ticket, aber ich möchte noch hinzufügen, was ich denke, ist die Erklärung:
IE8 funktioniert die folgende eigenartige Sache: die Enter-Taste wird das Formular abschicken, aber jeder
nicht gesendet werden, in der POST.
IE9 ändert sich das Verhalten und sendet den Wert. Chrome hat immer an den Wert, wie weit, wie meine tests gezeigt haben.
Ich hoffe das hilft...
Für alle zukünftigen Benutzer stolpern auf diese Frage:
Was für mich gearbeitet wurde das hinzufügen einer DOCTYPE:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Einen fix zu dem, was @Pancholi Jitendra vorgeschlagen - jetzt gibt er nur die form, die wir wollen, nicht alle von Ihnen
Versuchte ich es im IE8 und es funktioniert für mich. Sie haben, um sicherzustellen, dass ein Teil des Formulars den Fokus hat, obwohl.
Javascript hat eine Fokus-Funktion, die Sie verwenden können, um den Fokus setzen, wenn das, was Sie brauchen.
Können Sie ein onkeyup-Ereignis des Eingabe-Boxen, so dass, wenn Sie auf eine Eingabe in das Feld "Eingabe", dann wird es auch reichen.
Als CodePartizan erwähnt, müssen Sie den Fokus auf die-Taste, andernfalls, also, wenn Sie die Tabulatortaste, um die Schaltfläche, oder klicken Sie auf es, es scheint zu funktionieren für mich auch.
Ich glaube Yasin hat den Punkt.
Ich hatte gerade das gleiche problem: mehrere Textfelder in einem Formular, dessen Sichtbarkeit "versteckt" ist.
Mein workaround (um zu verhindern, dass die form von blinken), ist der form "Deckkraft" auf 0 in die css, und passen Ihre Stil-Einstellungen mit jQuery auf Dokument bereit.
Ich glaube, das ist nicht etwas, das fix mit JS.
Yeah, ich wurde gebissen von diesem Fehler zu heute. Ich fand diese Problemumgehung, wenn (diff aus dem OP):
Einfach neu erstellen die Inhalte, die form von dem Inhalt selbst. Huch. Aber es funktioniert. (Berühmte Letzte Worte...)
Diese funktioniert bei mir im IE8. Ich hatte dieses problem bei der Verwendung von nur einem Eingabefeld.
Lesen Sie mehr: http://www.rachaelarnold.com/dev/archive/enter-key-form-submission-bug#ixzz2Y5Zwgj2k
Ich hatte das gleiche Problem mit dem ie und keine der Lösungen geholfen, bis ich dies Lesen:
http://www.rachaelarnold.com/dev/archive/enter-key-form-submission-bug#ixzz2Y5Zwgj2k
mein Formular nur ein input-Feld....duh! 🙂
Finden eine funktionierende Lösung.
Machen Sie den Absenden-button unsichtbar anstelle der Verwendung von display:none;