Chosen: .trigger("chosen:updated") hat nicht das Recht, die von mir angegebene Option auszuwählen

Erstellt am 18. Okt. 2016  ·  7Kommentare  ·  Quelle: harvesthq/chosen

Wenn ich versuche, den Dirrert-Wert über Ajax erneut auszuwählen?
das erste mal die funktion das richtige tun
nach zweimal oder mehr, wenn ich die num1-Auswahloption geändert habe
die andere num2 select sollte aktualisiert werden, indem Sie etwas anderes auswählen option val
aber nicht alle Optionen die ich brauche ausgewählt oder gar keine ausgewählt

Erwartetes Verhalten

Sagen Sie uns, was passieren soll.
Wenn ich das eine wähle Element ändere
die select 2 brauchen durch die ausgewählte andere Option Basic die Option, die ich über Ajax bekomme

Tatsächliches Verhalten

Sagen Sie uns, was stattdessen passiert.

Umfeld

  • Ausgewählte Version : 1.6.2
  • jQuery- oder Prototyp-Version :
  • Browser und Version : Chrom 54.0.2840.59 m (64-Bit)
  • Betriebssystem und Version : WIN7 SP1 64BIT






etwas für die Funktion tun {
$("#one option[value=1]').attr('selected', true);
$("#one option[value=3]').attr('selected', true);
}
$("#one").val(1).trigger("ausgewählt:aktualisiert");

dann bekomme ich vielleicht nix zu selektieren nach manchmal später???
Ich weiß nicht, was ich tun soll, damit es die richtige Option auswählen kann, die ich danach benötigt habe?

Awaiting Reply

Hilfreichster Kommentar

Hallo Blankhang,
dein Problem kann damit gelöst werden.
was machst du:
$("#one option[value=1]').attr('selected', true);
$("#one option[value=3]').attr('selected', true);
$("#one").val(1).trigger("ausgewählt:aktualisiert");

was ist zu tun

$("#one option[value=1]').attr('selected', true);
$("#one option[value=3]').attr('selected', true);
$("#one").trigger("ausgewählt:aktualisiert");

Geben Sie keinen Wert an, während Sie das Update auslösen;

Alle 7 Kommentare

Entschuldigung für das Englisch meiner Armen :sob:

Wenn ich das richtig verstanden habe, fügen Sie der Auswahl mithilfe einer Ajax-Anfrage neue Optionen hinzu und lösen dann chosen:updated , damit Chosen die Änderungen widerspiegelt?

Bitte richten Sie eine Geige ein , um das Problem zu demonstrieren, und dann können wir entscheiden, ob es sich um einen Fehler oder nur um ein Problem mit Ihrer Implementierung handelt.

DANKE FÜR REP dies

NICHT SO .. die Optionsliste nicht aktualisieren
die Optionsliste ist immer gleich
aber der Wert nicht so
Jedes Mal, wenn ich den Wert ändern möchte, triggere ich ausgewählt: über jQuery
Beim ersten Mal stimmte der Wert der ausgewählten Artikel
wird aber beim serivel mal später schief gehen
Ich kann nicht den richtigen Wert des ausgewählten Elements ermitteln....
image
image
Beim ersten Laden war die Funktion richtig, nur eine Option muss ausgewählt werden
image
image

dann noch einmal
image

so sollte es sein
Uploading image.png…

https://jsfiddle.net/4jtsdnt7/ someof

Hallo Blankhang,
dein Problem kann damit gelöst werden.
was machst du:
$("#one option[value=1]').attr('selected', true);
$("#one option[value=3]').attr('selected', true);
$("#one").val(1).trigger("ausgewählt:aktualisiert");

was ist zu tun

$("#one option[value=1]').attr('selected', true);
$("#one option[value=3]').attr('selected', true);
$("#one").trigger("ausgewählt:aktualisiert");

Geben Sie keinen Wert an, während Sie das Update auslösen;

Ich hatte das gleiche Problem, nachdem ich den Auswahlstatus der Optionen einer Mehrfachauswahl durch JS aktualisiert und dann versucht hatte, Chosen zu aktualisieren, um die Auswahl anzuzeigen. Ich habe eine Geige gebaut, die dieses Verhalten demonstriert:

https://jsfiddle.net/5wbzxg27/

Es gibt 3 Schaltflächen:

  • Wählen Sie alle Optionen aus,
  • Wählen Sie einige der Optionen aus,
  • wählen Sie die restlichen Optionen aus.

Jede Option wird nur einmal im Auswahlfeld angezeigt, auch wenn Sie dieselbe Schaltfläche mehrmals drücken (und aktualisieren) . Das Skript läuft in Ordnung, der ausgewählte Zustand der ursprünglichen Auswahloptionen ändert sich in Ordnung, aber das Ausgewählte zeigt die Optionen nur beim ersten Mal an.

Hoffe das hilft.

@cinemazealot versuche folgenden Code:

$("#mySelect").chosen({
       placeholder_text_multiple: 'Something',
});
$('button#all').on('click', function() {
  $('#mySelect option').attr('selected', false);   // selects all
  var options = [];
  for (var i=0; i < $('#mySelect option').length; i++){
    options.push($('#mySelect option')[i].value);
  };
  $('#mySelect').val(options);
  $("#mySelect").trigger("chosen:updated");       // updates chosen
  return false;                                   // returns false not to post the surrounding form
});
$('button#first').on('click', function() {
  $('#mySelect option').attr('selected', false);  // clears all
  var options = [];
  for (var i=0; i < $('#mySelect optgroup[label="first"] option').length; i++){
    options.push($('#mySelect optgroup[label="first"] option')[i].value);
  };
  $('#mySelect').val(options);
  $("#mySelect").trigger("chosen:updated");       // updates chosen
  return false;                                   // returns false not to post the surrounding form
});
$('button#second').on('click', function() {
  $('#mySelect option').attr('selected', false);  // clears all
    var options = [];
  for (var i=0; i < $('#mySelect optgroup[label="second"] option').length; i++){
    options.push($('#mySelect optgroup[label="second"] option')[i].value);
  };
  $('#mySelect').val(options);
  $("#mySelect").trigger("chosen:updated");       // updates chosen
  return false;                                   // returns false not to post the surrounding form
});

Es sieht vielleicht klobig und groß aus, aber es scheint zu funktionieren

@pashaUSA, du bist die Beste! :) Sorry für die späte Reaktion, ich hatte andere laufende Projekte. Aber deine Lösung tut nur das, was sie tun soll. Vielen Dank! :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen