2012-03-30 7 views
0

Ich verwende das editable-options Plug-in für ein SELECT-Element in einem jQuery-UI-Dialogfeld. Editierbare Optionen ermöglichen eine Auswahlbox, in der Benutzer, wie der Name schon sagt, die OPTION-Elemente bearbeiten können.Wie verhindere ich, dass ESC in bearbeitbaren Optionen in den jQuery-ui-Dialog propagiert wird?

Die editierbare Optionen-Dokumentation sagt: "Der Benutzer kann die Änderungen durch Drücken von Escape abbrechen."

Das Problem besteht darin, dass das ESC-Tastendruckereignis entweder durch das Dialogfeld, in dem sich das Auswahlsteuerelement befindet, weitergegeben oder unabhängig erkannt wird und nicht nur die Änderungen an dem bestimmten Element, das der Benutzer bearbeitet, abgebrochen wird alle anderen Änderungen, die sie möglicherweise im Dialog vorgenommen haben. Nicht eine glückliche Benutzererfahrung.

Ich habe etwas recherchiert (meistens this question und die Links, die es führte), und dachte, ich sollte einen Aufruf von e.stopPropagation() in die Escape-Key-Ereignisbehandlung im editierbaren Optionen-Code, aber das didn arbeite nicht.

Ich benutze jQuery 1.7.1 und jquery-ui 1.8.16 (das soll die Behebung für das Problem im obigen Link beschrieben haben, aber das ist natürlich nur in den Dialogen selbst, nicht bearbeitbare Optionen).

Kann mir bitte jemand in die richtige Richtung zeigen? Oder sagen Sie mir, ob es nicht möglich ist, das Problem zu beheben, aber wenn das der Fall ist, macht es bearbeitbare Optionen unbrauchbar. Ich werde meine eigenen Forschungen fortsetzen und wenn ich etwas finde, werde ich es entweder hier hinzufügen oder meine eigene Frage beantworten.

Antwort

0

Okay, ich habe es herausgefunden und, wie versprochen, hier ist die Antwort.

Es stellt sich heraus, dass der bearbeitbar-Optionen Code das keyup Ereignis behandelt, während der jQuery UI Dialog Code das Ereignis keydown Griffe, die, natürlich, früher auftritt. Daher kann der Code für bearbeitbare Optionen das Ereignis nicht abfangen.

Ich habe einen Keydown-Handler in editierbare-Optionen hinzugefügt, in denen ich e.stopPropagation() und presto aufgerufen! Problem gelöst.

+0

Kann jemand mit dem Entwickler in Verbindung treten, also kann ich die Änderung vorschlagen? –

Verwandte Themen