<p>gewählt: öffnen funktioniert nicht</p>

Erstellt am 22. Dez. 2013  ·  5Kommentare  ·  Quelle: harvesthq/chosen

Ich versuche, eine Auswahl nach einem Klick auf eine Schaltfläche zu öffnen, aber es funktioniert nicht. Wenn ich nach dem Trigger einfüge und alert() einfüge, wird es geöffnet ...
(Ausgewählte v1.0 mit jquery verwenden)

Beispiel:

<select id="select">
    <option value="1">a</option>
    <option value="2">b</option>
    <option value="3">c</option>
</select>
<br>
<button onclick="$('#select').trigger('chosen:open'); ">Press this button to open (doesnt work) </button>
<button onclick="$('#select').trigger('chosen:open'); alert('ups!');">Press this button to open (work???)</button>

<script>
$(document).ready(function() {
$('#select').chosen();
});
</script>

Beispiel in: http://jsfiddle.net/EArg6/28/

Hilfreichster Kommentar

Wenn Sie auf die Schaltfläche klicken, empfängt Chosen das Ereignis chosen:open . Das Ereignis bläst jedoch weiterhin das DOM auf und Chosen erkennt sofort einen Klick auf ein Element, das nicht das aktive Chosen ist ... also schließt es es. Sinn ergeben?

Wenn Sie mit Inline-JS arbeiten, besteht die einfachste Lösung darin, setTimeout zu verwenden, um aus dem aktuellen Ereignisstapel auszubrechen:

onClick="setTimeout(function(){ $('#select').trigger('chosen:open'); }, 0)"

Sie sollten jedoch mit ziemlicher Sicherheit kein Inline-JS verwenden. Sie können immer noch setTimeout wenn Sie möchten, aber es sollte ausreichen, das Ereignis zu stoppen.

$('button').on("click", function(evt){
  evt.stopPropagation();
  $('#select').trigger('chosen:open');
});

Ich habe Ihre Geige mit diesem funktionierenden Code aktualisiert: http://jsfiddle.net/EArg6/33/

Alle 5 Kommentare

Keine der Tasten funktioniert bei mir in Ihrer Geige (in Safari).

Welchen Browser/Version verwendest du?

Ich habe es getestet mit:

  • Firefox 25.0.1
  • Oper 12.16
  • Chrom 31.0.1650.63 m

Der erste Knopf funktioniert nicht
Die zweite Schaltfläche öffnet die Optionsliste (nur zum Schließen, wenn ich das Feld "Alarm" schließe).

Wenn Sie auf die Schaltfläche klicken, empfängt Chosen das Ereignis chosen:open . Das Ereignis bläst jedoch weiterhin das DOM auf und Chosen erkennt sofort einen Klick auf ein Element, das nicht das aktive Chosen ist ... also schließt es es. Sinn ergeben?

Wenn Sie mit Inline-JS arbeiten, besteht die einfachste Lösung darin, setTimeout zu verwenden, um aus dem aktuellen Ereignisstapel auszubrechen:

onClick="setTimeout(function(){ $('#select').trigger('chosen:open'); }, 0)"

Sie sollten jedoch mit ziemlicher Sicherheit kein Inline-JS verwenden. Sie können immer noch setTimeout wenn Sie möchten, aber es sollte ausreichen, das Ereignis zu stoppen.

$('button').on("click", function(evt){
  evt.stopPropagation();
  $('#select').trigger('chosen:open');
});

Ich habe Ihre Geige mit diesem funktionierenden Code aktualisiert: http://jsfiddle.net/EArg6/33/

danke @pfiller

Danke @pfiller , diese Lösung und Erklärung hat mir viel Sodbrennen

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen