Wie kann ich umwandeln Geben Sie auf der Registerkarte (mit Fokus ändern) im IE9? Es arbeitete in IE8

Ich habe eine text-Eingabe mit einem onkeydown-event-handler wandelt die <EINGABETASTE> zu <Tab> durch die änderung der Veranstaltung keyCode von 13 auf 9.

<input type="text" onkeydown="enterToTab(event);" onchange="changeEvent(this);" 
       name="" value="" />
<!-- Other inputs exist as created via the DOM, but they are not sibling elements. -->

Javascript:

function enterToTab(myEvent) {
    if (myEvent.keyCode == 13) {
        myEvent.keyCode = 9;
    }
}
function changeEvent(myInput) { var test = "hello"; }

In IE8, dieser verursacht das onchange-Ereignis ausgelöst, aber das passiert nicht im IE9. Stattdessen das Eingabefeld behält den Fokus. Wie kann ich das möglich machen? (Es funktioniert in Firefox 3.6 und Chrome 10.0.) Das funktioniert auch im Browser-Modus im IE9, wenn ich die Dokument-Modus auf "IE8-standards". Aber es wird nicht die Arbeit mit einem Dokument-Modus von "IE9-standards". (Mein DocType ist XHTML 1.0 Transitional.)

Da es funktioniert im IE7 & 8, könnte das ein bug im IE9 zu bekommen, die befestigt?

Bitte beachten Sie: ich nicht verwenden input.blur() oder manuell einen neuen Schwerpunkt, die, beraten durch alle anderen Lösungen, die ich gelesen habe. Ich habe schon versucht, onkeypress und onkeyup mit kein Glück. Ich brauche eine generische Lösung, die bewirken, dass die web-app buchstäblich so Verhalten, als wäre würd ich hit <Tab>. Auch glaube ich nicht, habe jQuery, allerdings Dojo 1.5 steht mir zur Verfügung.

Beachten Sie auch: ich WEIß, das ist "falsch" Verhalten, und dass Eingeben sollte, das Formular zu senden. Jedoch, meine Kunden Mitarbeiter kommen ursprünglich aus einem green-screen-Umgebung, wo Geben Sie verschiebt Sie zwischen den Feldern. Wir müssen weiterhin die gleiche Benutzeroberfläche. Es ist, was es ist.

UPDATE: fand ich einen Unterschied zwischen IE8 & IE9. Im IE8, meine Einstellung myEvent.keyCode hält. Im IE9 NICHT. Ich kann das update window.event.keyCode, und es halten wird, aber das wird nicht beeinflussen, was passiert, später. Argh... Irgendwelche Ideen?

  • Ich hatte das gleiche problem, aber über die COM-Objekte. Ich habe es geschrieben es [hier][1]. Jemand kommentierte mit den gleichen JavaScript-Problem. Auch hat sich unser Unternehmen eröffnet ein microsoft-Fall in der Hoffnung, eine realistische Antwort. Ich werde aktualisieren, meine Frage mit etwas nützliches. Danke. [1]: stackoverflow.com/questions/5127079/...
  • Die Frage ist, warum würden Sie wollen, dies zu tun. Tab ist die Taste, navigiert zwischen den Feldern. Enter wird benutzt, um ein Formular Absenden. Benutzer erwarten, dass Sie dieses Verhalten, also warum verwirren Sie?
  • Auch dies ist ein Fehler im IE 9. Die keyCode Eigentum der Tastatur Event Objekte gelesen-nur in allen anderen Browsern als IE <= 8 und es gibt keine Spezifikation für diese Eigenschaften.
  • Unsere Benutzer erwarten oft die enter-Taste, um zum nächsten Eingabefeld. Wahrscheinlich ist dieses Verhalten von älteren windows - /dos-Programme
  • IE11 Updates, diese richtig (Fokus nicht verschieben). IE10 Art der arbeiten (Eingang verwischt aber die Schaltfläche ist nicht Fokus). Testen Sie das Verhalten mit output.jsbin.com/nideqoq/quiet
InformationsquelleAutor David | 2011-03-18
Schreibe einen Kommentar