Select2设置选定值的新方法

Lel*_*eta 9 jquery jquery-select2

我用来为select(使用Select2)设置加载时的默认值,代码如下:

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

在控制台上升级到版本4.0我读到:"Select2:该select2("val")方法已被弃用,将在以后的Select2版本中删除.请改用$ element.val()." 所以我试着改变我的代码

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

要么

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

但它们都不起作用.我究竟做错了什么?任何提示?

Jam*_*ard 35

发行说明:

您应该直接在底层元素上调用.val.如果需要第二个参数(triggerChange),还应该在元素上调用.trigger("change").

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

所以,如果你有一个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>
Run Code Online (Sandbox Code Playgroud)

在过去你会像这样初始化它:

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

这已被替换为:

$("#mySelect").select2();
$("#mySelect").val("audi").trigger("change");
Run Code Online (Sandbox Code Playgroud)

对你而言,我想这会转化为:

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

虽然,你是否有任何理由以编程方式进行此操作?

参考我的例子,这也可以:

<option value="audi" selected>Audi</option>
Run Code Online (Sandbox Code Playgroud)

HTH

  • 触发选择有效,但它确实是触发更改事件,因此如果更改后有重定向,页面将立即重定向.它对我有用:$("#mySelect").val("audi").select2(); (3认同)