jQuery keypress/keyup/etc Ereignisse, die nicht entlassen werden, wenn die select-box wird erweitert
Check out my-code-Beispiel hier: http://pastebin.com/D1ZctG11
Die Kernaussage ist: Wenn du ein select-Feld erweitert (entweder über die Tastatur oder die Maus), jquery wichtigsten Veranstaltungen, die nicht scheinen, um das Feuer - zumindest nicht in der Mac-Chrome.
Gibt es irgendwelche workarounds?
Mein end-Ziel ist es, zu wählen, was der Benutzer eingegeben hat, während die select-box wird erweitert, wenn mit der optgroup
element.
edit:
jsfiddle link: http://jsfiddle.net/XacfX/
Dank
Mustafa
- Einige Dinge, um zu versuchen, kommen sofort in den Sinn: ist das Ereignis, sprudeln? Können wickeln Sie die select-in ein div und erfassen Sie dort? Sind Sie mit keydown, keyup und keypress? Versuchen Sie, alle drei? Besser noch, warum nicht einfach verwenden Sie ein Kombinationsfeld und ersetzen Sie die select -; Sie sparen sich einige Mühe 😉
- In Zeile 11 haben Sie $(this).attr("id"); aber 'dies' wäre 'e'. Auch könnte man erwägen, mit Konsole.Protokoll zur Ankündigung der Veranstaltung gefeuert wird in deinem debugger.
- da Sie Ihren code gepostet, es wäre besser gewesen, wenn es post auf jsfiddle.net damit wir es testen kann
- Wenn jemand zeigen könnte, die absolut einfachste Lösung für dieses problem, ich würde gerne, um Ihnen ein Kopfgeld von 50 Ruf Punkte. Durch einfachste ich meine, die wenigsten von code, der das problem löst (während noch die Erhaltung der Gruppierung).
- Ich bin mir ziemlich sicher, dass die "besten" Abhilfe, die funktioniert in allen Browsern wäre die Ersetzung der select-Boxen w/ optgroups mit einer javascript-Implementierung, die verwendet divs und Listen, oder etwas entlang jenen Linien.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie haben zu verwenden die jQuery ändern():
http://jsfiddle.net/vvBqE/11/
Wenn ich Sie falsch verstanden, Sie können sehen, welche option der Benutzer gewählt hat, auf diese Weise. Sie können auch die wichtigsten Ereignisse in meinem Beispiel, aber die callback-Funktion wird nicht ausgelöst, wenn der Benutzer wählt eine option aus, indem Sie mit der Maus nur.
$('select option:selected').val();
Als dies in der Tat scheint verbuggt möchten Sie vielleicht versuchen, so etwas wie einen workaround:
http://www.devirtuoso.com/2009/08/styling-drop-down-boxes-with-jquery/
Machen würde die select-box als Stil-Liste am Ende. Einige Optimierungen zu ermöglichen optgroups mit dieser Lösung und voilá, du hast ein dropdown-Feld angezeigt wird inline mit der Seite ist und daher nicht als block-Schlüssel-Ereignisse.
Auf der anderen Seite erhalten Sie auch zum Stil der dropdown-ganz wie Sie wollen 🙂
Buggy in der Tat, ich kann nicht finden, eine Erklärung irgendwo, aber es scheint im Zusammenhang mit der Tatsache, dass der browser rendert die dropdown popup auch außerhalb des browser-Fensters (versuchen Sie, Ihren browser wirklich klein und öffnen Sie Ihre dropdown, verlässt es die Grenzen), so dass es sich nicht um ein typisches Dokument-element.
Man kann dies umgehen, fügen Sie eine Größe auf den dropdown -
Ich bin sicher, dass einige DOM-Experten rund um etwas Licht auf diese ein.