Überprüfen Sie, ob wählen, ist die Anzeige-Optionen
Habe ich folgenden HTML-code:
HTML:
<select>
<option selected>Test 1</option>
<option>Test 2</option>
<option>Test 3</option>
</select>
Wie kann ich überprüfen, ob die <option>
s der <select>
angezeigt werden? Zum Beispiel, dies wird als die <option>
s der <select>
angezeigt:
- Und dies ist zu berücksichtigen, dass <option>
s der <select>
werden nicht angezeigt:
Ich habe dies ausprobiert:
JS:
$("#myselect").on("click", function() {
if ($("#myselect option").length == 0) {
console.log("not displayed");
} else {
console.log("displayed");
}
});
HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="myselect">
<option selected>Test 1</option>
<option>Test 2</option>
<option>Test 3</option>
</select>
Aber die Konsole meldet "angezeigt" die ganze Zeit.
Also, wie kann ich das erreichen?
EDIT 1:
Antworten Wie um zu überprüfen, ob ein select-element ist immer noch "offen" /aktiv mit jquery funktioniert nicht, weil wenn ich auf die select
element, um die Optionen anzuzeigen, dann klicken Sie erneut, werden die Optionen nicht angezeigt werden, obwohl die select
konzentriert sich immer noch.
EDIT 2:
Fall, ich war nicht griffig genug, im Grunde möchte ich die Konsole anmelden "angezeigt" oder "nicht angezeigt" klickt der Benutzer auf die select
oder die option
s
- möglich, Duplikat der Wie um zu überprüfen, ob ein select-element ist immer noch "offen" / aktiv mit jquery
- Sie sind angezeigt, wenn die
<select>
element den Fokus hat, aber Sie wird noch existieren, wenn es nicht (es sei denn, Sie hinzufügen/entfernen Sie Sie mithilfe von JS-code...). - Die Antwort, es funktioniert nicht, da kann ich drücken Sie Escape, und wählen Sie immer noch im Mittelpunkt, auch wenn es nicht die Anzeige-Optionen
- einverstanden w/ @AlejandroTeixeiraMuñoz - die 2. Antwort, der link ist vielversprechend
- Recht, überprüfen Sie die zweite
- Die 2. Antwort dreht sich um das gleiche Konzept auf die konzentrieren, die nicht arbeiten gehen... Check mein edit
- dann eben mit klicken Sie auf?
- Ich kann klicken Sie irgendwo auf das Dokument, um die trigger-Optionen nicht angezeigt werden. Gleiche für die Taste
Escape
. Und ich denke, es gibt viele viele andere Wege, um zu verbergen die Optionen, ohne zu klicken auf dieselect
oder dieoption
s selbst. - check meine Antwort. Hinzufügen vielleicht die Escape-Taste Zustand ok sein?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, hören Sie auf klicken Sie auf, blur und key-press-Ereignis. Ich bin gerade mal ein
open
variabletrue or false
auf jedem event.JS:
HTML:
select
. Dieser zeigt alle Optionen und Protokolle "Menü öffnen". Klicken Sie auf dieselect
wieder. Diese blendet alle Optionen und die Konsole meldet "Menü schließen". Dann klicken Sie irgendwo, dass ist nicht dieselect
. Console-log "- Menüs geöffnet ist". Ihre Antwort muss nur ein quick-fix, außer, dass es scheint, gut zu arbeiten.Können Sie
change
Ereignis im Fall vonnot displayed
, undfocus
Ereignis fürdisplayed
JS:
HTML:
focus
funktioniert nicht sehr gutselect
um die Optionen anzuzeigen, drücken Sie Sie erneut, um zu verbergen die Optionen.Nach der Lektüre, Ich erkannte, dass die Option-tags sind nicht "üblich" DOM-Elemente. Dann, ist nicht so leicht zu kontrollieren, Sie (statt Sie überprüfen, klicken Sie auf Unschärfe, und die Kombination von anderen Methoden, als wir den Versuch gestartet, vor).
Nun Ich habe es geschafft Sie endlich gefunden, die Lösung in eine Mischung von der ersten Idee, die wir hatten, dann, gerade krank erklären, die anderen möglichen Lösungen, die Sie und all die Dinge, Ive gelernt, über wählt:
Dann, nachdem Sie all diese Dinge überprüft, ich denke, dass es nicht möglich ist, um es in eine Reine HTML-Art, ohne dabei eine Menge auf/Unschärfe steuert, wie zuvor beantwortet.
Trotzdem, zu klären, es gibt viele jquery librarys, die Ihnen helfen zu simulieren, ein select/option dropdown und zu kontrollieren, wenn seine öffnen.
Ich hoffe, diese Antwort löst deine Frage. Überprüfen Sie diese funktionale fiddle Ive für Sie vorbereitet, um zu zeigen, das jquery dropdown Weg:
JS:
HTML:
Sind die docs Ive Lesen um es zu verstehen:
jQuery keypress/keyup/etc Ereignisse, die nicht entlassen werden, wenn die select-box wird erweitert
Wie zu erkennen escape-Taste drücken mit JavaScript oder jQuery?
jQuery Keypress-Ereignis: Enter-Taste
Keypress-Ereignis auf die gewählten single wählen
select
wird, meldet er sichopen
. Ich auf dieselect
wieder, und es schließt sich, nochopen
angemeldet ist, wieder. So funktioniert das nicht allzu gut...Im schlage vor, Sie verwenden neue jquery-selectmenu ist die Bereitstellung von selectmenu open-Ereignis
JS:
CSS:
HTML:
Ref : http://api.jqueryui.com/selectmenu/#event-open
Lösung:
select
ist ein Eingang, es hat einen Fokus-Zustand, so dass, wenn Sie fokussiert ist in der Liste(Optionen) wird angezeigt, wenn es nicht in der Liste der Optionen verschwinden. Also:Hoffe, das hilft.