2016-09-22 5 views
1

Welcher Event wird ausgelöst, wenn ein <select> Element seine Liste anzeigt/ausblendet?JavaScript-Ereignis, wenn Optionen auswählen angezeigt werden?

Beispiel:

<select> 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
</select> 

Wenn Sie mit einer Maus in diesem Auswahlfeld klicken zeigt der Browser die Liste der Optionen.

Wenn Sie jedoch in die Auswahlbox wechseln, zeigt der Browser die Liste der Optionen nicht an.

Ist die einzige Möglichkeit, nach einem MouseUp-Ereignis innerhalb des Select-Elements zu suchen, oder fehlt mir etwas Offensichtliches?

$(document.body).on('mouseup', 'select', function(){    
    console.log('Either shown or hidden the options...but which?') 
}); 

Vielen Dank im Voraus.

P.S. Ich versuche, dem Element <select> eine Klasse hinzuzufügen, wenn es die <options> zeigt, damit ich einen anderen benutzerdefinierten Caret-Stil zeigen kann, wenn der Browser das "Optionen-Popover" anzeigt, als wenn es nicht angezeigt wird.

+0

verwenden das 'auf change' von' jquery' – mmativ

+0

was auf Klick cor Hinzufügen der Klasse und Onchange es zum Entfernen? –

+0

Ein Mausereignishandler ist nicht genug, da es mit der Tastatur möglich ist, in ein select-Element zu wechseln und dann Alt-Down oder Alt-Up zu drücken, um die Liste zu löschen und einzufügen. (Was Sie eigentlich erreichen möchten, warum sollten Sie das tun? Benutzer erwarten Standardverhalten von Standardsteuerelementen wie ausgewählten Elementen.) – nnnnnn

Antwort

0

Das würde bedeuten, dass das Select-Element im Fokus ist. In diesem Szenario benötigen Sie kein Javascript. Sie können dafür mit CSS sorgen.

select:focus { 
    color:red; 
} 

Aber wenn Sie jQuery verwenden wollte wäre es etwa so aussehen:

$("select").focus(function(){ 
    console.log(" h1 "); 
}) 

rein Javascript verwenden, geben Sie Ihre wählen Sie eine id = „select“ und man konnte so etwas tun:

var x = document.getElementById("select"); 
x.addEventListener("focus", myFocusFunction, true); 
x.addEventListener("blur", myBlurFunction, true); 

function myFocusFunction() { 
    document.getElementById("select").style.backgroundColor = "yellow"; 
} 

function myBlurFunction() { 
    document.getElementById("select").style.backgroundColor = ""; 
} 
+0

Die Frage, ob es ein Ereignis für den Fall gibt, in dem die Liste abbricht (oder sich wieder versteckt), Das ist nicht dasselbe wie das ausgewählte Element, das den Fokus erhält. – nnnnnn

+0

@nnnnnn Ja, Sie haben Recht. Es ist keine richtige Antwort auf die Frage. Es gibt kein JavaScript-Ereignis, das mit dem select-Element verbunden ist und dessen Optionen anzeigt. – partypete25

+0

@ user300838 Wenn Sie wirklich den gewünschten Effekt erreichen möchten, eine Klasse zum ausgewählten Element hinzuzufügen, wenn es geöffnet ist, müssen Sie wahrscheinlich ein jquery-Plugin wie http://gregfranko.com/jquery.selectBoxIt verwenden. js/index.html, https://silviomoreto.github.io/bootstrap-select/ oder https://selectiz.github.io/selectize.js/ – partypete25

Verwandte Themen