Überschreibt das SELECT-Verhalten der Eingabetaste

8

Arbeiten an einem HTML-Steuerelement, das mehr oder weniger wie eine Tabelle funktioniert - mit einer Matrix von bearbeitbaren Datenzellen. Wenn es um Zellen geht, die von einem SELECT abgeleitet sind, habe ich ein Problem, das richtige Verhalten zu erhalten, wenn dieser Zellentyp zum Bearbeiten ausgewählt wird:

Wenn ich die Auswahl mit ihrer Standardformatierung (Größe = 0) rendere, erhält der Benutzer das Verhalten der Auswahl der Enter-Taste Verarbeitung:

  • 1. Eingabe = & gt; aktiviert die Bearbeitung der Zelle (zeigt das Select-Steuerelement an)
  • 2. Geben Sie = & gt; erweitert die Auswahl, um die Optionen anzuzeigen
  • Benutzer trifft die Auswahl mit den Tasten up / dn
  • 3. Geben Sie = & gt; schließt die Liste. (Problem: Diese Eingabe ist vom "keydown" Event-Handler ausgeblendet)

  • 4. Geben Sie = & gt; erforderlich, um den Ereignis-Listener zum Deaktivieren der Zellenbearbeitung auszulösen.

Wenn andererseits die Auswahl als Listenfeld gerendert wird (zB Größe = 3), ist das Verhalten der Eingabetaste genau das, wonach ich suche (dh # 2 und # 3 auf der obigen Liste) sind nicht mehr erforderlich), aber da die Liste jetzt intern im Steuerelement angezeigt wird (anstatt als Popup), wird die Zellen- / Zeilengröße aufgebläht.

Gibt es also eine Möglichkeit, das 3. Enter-Key-Event oben zu "haken" oder eine andere, relativ unkomplizierte Möglichkeit, das Verhalten des Select zu ändern, wenn es um die Verarbeitung der Enter-Taste geht?

HINWEIS: Wir verwenden keine Drittanbieterbibliothek (lesen Sie: jQuery, et al)

EDIT: Hier ist der Event-Listener (angehängt über den typischen "addEventListener (...)"

) %Vor%

2. EDIT: pro Kommentare / Vorschläge, habe ich hinzugefügt / gegeben diesen Versuch:

%Vor%

Dieses Ereignis wird ausgelöst, aber es wird für jede der verschiedenen Optionen ausgelöst. Mit anderen Worten, es scheint nicht möglich zu sein, dass ich feststellen kann, ob dies die Option ist, die der Benutzer tatsächlich für die Auswahl vorgesehen hat, oder nur eine, die auf dem Weg überquert wurde. Um dies zu demonstrieren, hier ist ein Beispiel für die Site von jquery. Beachten Sie, wie sich der Text mit jedem Hoch / Runter ändert, unabhängig von der Enter-Taste:

Ссылка

Gelöst: Danke an alle Kommentatoren für ihre Vorschläge. In der Tat bestand die Lösung (für meine Situation sowieso) darin, einen "keyup" -Ereignis-Listener in den Mix aufzunehmen. Ich kann nicht sagen, in welchen Browsern das funktioniert, aber in den späteren Versionen von Chrome funktioniert es.

    
mjk 09.08.2013, 21:23
quelle

1 Antwort

2

Je nach Vorschlag besteht die Möglichkeit, das "verborgene" Enter-Key-Ereignis aufzuheben, darin, einen "keyup" -Ereignis-Listener hinzuzufügen. Frage wurde bearbeitet, um die Lösung widerzuspiegeln.

HINWEIS: Diese Antwort wurde nur gepostet, um die Frage zu schließen. Bitte geben Sie an, wo es fällig ist - jesus.tesh und der Rest der Kommentatoren für ihre Vorschläge ...

    
mjk 12.08.2013, 13:53
quelle

Tags und Links