web-dev-qa-db-fra.com

Select2 définir la valeur sélectionnée nouvelle méthode

J'utilise pour définir la valeur par défaut à la charge pour un select (en utilisant Select2) avec un code comme celui-ci:

$('#soff_gar').select2({placeholder: "Scegli", initSelection: true }).select2("val","<?php echo $garante; ?>");

Mise à niveau vers la version 4.0 sur la console, j'ai lu: "Select2: la méthode select2("val") a été déconseillée et sera supprimée dans les versions ultérieures de Select2. Utilisez plutôt $ element.val ()." J'ai donc essayé de changer mon code en

$('#soff_gar').select2({placeholder: "Scegli", initSelection: true }).val("<?php echo $garante; ?>");

ou

$('#soff_gar').select2({placeholder: "Scegli"}).val("<?php echo $garante; ?>");

mais aucun d'eux ne fonctionne. Qu'est-ce que je fais mal? Un indice?

9
Lelio Faieta

De les notes de version :

Vous devez plutôt appeler directement .val sur l'élément sous-jacent. Si vous avez besoin du deuxième paramètre (triggerChange), vous devez également appeler .trigger ("change") sur l'élément.

$("select").val("1"); // instead of $("select").select2("val", "1");

Donc, si vous avez un élément select:

<select id="mySelect">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

Dans le passé, vous l'auriez initialisé comme suit:

$("#mySelect").select2().select2("val","audi");

Cela a été remplacé par:

$("#mySelect").select2();
$("#mySelect").val("audi").trigger("change");

Pour vous, je suppose que cela se traduirait par:

$('#soff_gar').select2({
  placeholder: "Scegli", 
  initSelection: true 
});
$('#soff_gar').val(<?php echo $garante; ?>).trigger("change");

Cependant, y a-t-il une raison pour laquelle vous faites cela par programme?

En référence à mon exemple, cela fonctionnerait également:

<option value="audi" selected>Audi</option>

HTH

33
James Hibbard