Chosen: Ausgewählten Wert mit Javascript festlegen

Erstellt am 21. Juli 2011  ·  25Kommentare  ·  Quelle: harvesthq/chosen

Das Festlegen des ausgewählten Werts mit Javascript funktioniert nicht. Ich weiß, dass selected() die Klasse single_examplechzn_o_0 zu <li> hinzufügt, was nichts mit dem Optionswert gemeinsam hat, und dass #single_example nach selected() nicht mehr existiert. Gibt es eine Möglichkeit, dass dies funktionieren kann?

Das funktioniert:
```


$("#single_example").val(2);

``````

Das geht nicht:
```
``````

$("#single_example").val(2);

Hilfreichster Kommentar

Danke @stof , das hat geklappt.

Nur als Referenz, ändern Sie einen Wert dynamisch mit jQuery:

$("#single_example").val(2).trigger('chosen:updated');

Alle 25 Kommentare

Probieren Sie meinen Zweig (https://github.com/tompaton/chosen) aus, er kann dies für Sie beheben.

Leider funktioniert es bei mir nicht.

Sie müssen das Änderungsereignis manuell auslösen (soweit ich weiß, führt kein Weg daran vorbei, was ärgerlich ist ...):

$("#single_example").val(2).trigger("change");

Danke, das funktioniert einwandfrei!

Ich habe das Beispiel gemacht, das Sie mit Fehler zeigen, aber wenn ich $("#single_example").val(2).trigger("change");
, ich habe keine Änderung in der Liste (ausgewählter Wert).
Ich verwende die letzte Version des Plugins.
Grüße

Sie müssen https://github.com/tompaton/chosen verwenden, es wurde nicht mit dem Harvesthq-Zweig zusammengeführt.

Ja, es funktioniert wie ein Zauber nach der Verwendung von Tompaton Branch.

$("#single_example1").val(2);
$("#single_example2").val(3)
...
$("#single_example3").val(20);
$('.chosen').trigger('change');

Hallo Leute, ich habe die Gabel von Tompaton heruntergeladen (https://github.com/tompaton/chosen) Ich habe Folgendes getan:
$("#single_example").val(2).trigger("change");
A das funktioniert wie ein Zauber
Thxs für Ratschläge :-)

Ich versuche, eine Clear-All-Funktion zu schreiben, und dies scheint nicht zu funktionieren, selbst wenn ich den Tompaton-Zweig verwende:
$(".state_list").val("").trigger("change");

Ich habe eine leere Option:
```

Is there a way to totally remove all selections? Also how about selecting all?

Tut mir leid, mein Patch hat Mehrfachauswahlfelder nicht angesprochen, das ist erforderlich
ein bisschen mehr Code ...

Am Freitag, 12. August 2011 um 1:50 Uhr, MB34
[email protected]
schrieb:

Ich versuche, eine Clear-All-Funktion zu schreiben, und dies scheint nicht zu funktionieren, selbst wenn ich den Tompaton-Zweig verwende:
$(".state_list").val("").trigger("change");

Ich habe eine leere Option:

Gibt es eine Möglichkeit, alle Auswahlen vollständig zu entfernen? Wie wäre es auch mit der Auswahl aller?

Antworten Sie direkt auf diese E-Mail oder sehen Sie sie auf GitHub an:
https://github.com/harvesthq/chosen/issues/31#issuecomment -1782941

Gibt es also eine Möglichkeit, dies zu tun, ohne das Plugin zu patchen?

Ok, das Löschen aller Auswahlen aus einer Mehrfachauswahl ist also ohne Patchen möglich, wenn Sie bereit sind, sich darauf festzulegen, wie die Interna der Auswahl funktionieren:

// replace {select_id} below with the id of your <select> tag
$('#{select_id}_chzn .chzn-choices .search-choice a').click();

Dadurch wird das Klicken auf das „x“ zum Entfernen bei jedem ausgewählten Element in der Mehrfachauswahl simuliert.

Es ist auch möglich, alle Optionen auszuwählen (indem simuliert wird, dass alle verfügbaren Optionen in der Dropdown-Liste angeklickt werden):

$('#{select_id}_chzn .chzn-drop li').click();

Diese müssen wirklich als Methoden zum gewählten Plugin hinzugefügt werden.

Ok, um das alles zu verdeutlichen:

@pfiller hat darauf hingewiesen, dass dies alles im Harvesthq/Chosen-Zweig möglich ist, indem Folgendes verwendet wird:

$("#single_example").val(2).trigger("liszt:updated");

Mein Fehler, weil ich den Code/die Dokumentation nicht gründlich genug gelesen habe. Das funktioniert auch für mehrere Auswahlfelder.

Das Löschen aller Optionen aus einer Mehrfachauswahl kann erfolgen mit:

$('#{select_id}').val([]).trigger('liszt:updated');

Ich denke, mein vorheriger Kommentar ist immer noch die einzige Möglichkeit, alle Optionen auszuwählen.

_Beachte_, dass mein Fork jetzt derselbe ist wie Harvesthq/chosen in Bezug darauf, also benutze ihn einfach und ignoriere das .trigger('change') -Zeug.

Für diejenigen unter Ihnen, die möglicherweise den Prototype-Adapter verwenden, können Sie dasselbe wie folgt tun:

  $(select_box_id).select('option[selected]').each(function(el){el.selected = false});
  Event.fire($(select_box_id), 'liszt:updated')

Etwas klobig, aber es funktioniert. Wenn es einen besseren Weg gibt, dies zu tun, lass es wissen

Die Lösung, die ich verwende, besteht darin, die ausgewählte Option auf der ursprünglichen Quellauswahl zu ändern und dann Chosen neu zu erstellen.

select.val(value);
select.chosen('destroy');
select.chosen({});

@roelvanduijnhoven Die im Kommentar von @tompaton (oder von @RyanS für die Prototype-Version) angegebene Lösung ist besser, da sie das vorhandene ausgewählte Element aktualisiert, anstatt es zu zerstören und ein neues zu erstellen

Aus irgendeinem Grund schien die Lösung von @tompaton in meinem Fall nicht zu funktionieren. Ich habe mir aber nicht viel Mühe gegeben, also habe ich vielleicht etwas falsch gemacht.

@roelvanduijnhoven Wenn Sie die Version 1.0 verwenden, ist das Ereignis jetzt chosen:updated

Danke @stof , das hat geklappt.

Nur als Referenz, ändern Sie einen Wert dynamisch mit jQuery:

$("#single_example").val(2).trigger('chosen:updated');

Und als Referenz ist dies dokumentiert: http://harvesthq.github.io/chosen/#change -update-events

Entschuldigung @roelvanduijnhoven , mein Kommentar war für ein anderes Thema gedacht, ich habe ihn jetzt gelöscht. (Google Mail hatte die E-Mails gruppiert, und ich habe einen Kommentar gepostet, indem ich geantwortet habe.)

Vielen Dank! Dieser Thread hat mir den Tag gerettet!
Endlich habe ich Mehrfachauswahl mit Standardwerten :)

Hallo, ich habe jquery neu und gerade ausgewählt heruntergeladen. Ich bin etwas verwirrt darüber, wie mehrere Werte ausgewählt werden.

Was ich versuche zu tun, ist das Erstellen einer Option dynamisch beim Laden der Seite und muss dann die Standardeinstellungen auswählen

Danke
Guri

gpdhillion:
benutze das
$('.chosen-select').val([1,2,3]).trigger('chosen:updated');

$ ("#id").val(id_wert);
$("#id").chosen('zerstören');
$("#id").chosen({});

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen