select2 设置选中值新方法
Posted
技术标签:
【中文标题】select2 设置选中值新方法【英文标题】:Select2 set selected value new method 【发布时间】:2015-04-23 07:52:12 【问题描述】:我使用这样的代码为选择(使用 Select2)设置加载时的默认值:
$('#soff_gar').select2(placeholder: "Scegli", initSelection: true ).select2("val","<?php echo $garante; ?>");
在控制台上升级到 4.0 版我读到:“Select2:select2("val")
方法已被弃用,将在以后的 Select2 版本中删除。改用 $element.val()。”所以我试图将我的代码更改为
$('#soff_gar').select2(placeholder: "Scegli", initSelection: true ).val("<?php echo $garante; ?>");
或
$('#soff_gar').select2(placeholder: "Scegli").val("<?php echo $garante; ?>");
但它们都不起作用。我究竟做错了什么?有什么提示吗?
【问题讨论】:
【参考方案1】:来自the release notes:
你应该直接在底层元素上调用 .val 反而。如果你需要第二个参数(triggerChange),你 还应该在元素上调用 .trigger("change")。
$("select").val("1"); // instead of $("select").select2("val", "1");
所以,如果你有一个选择元素:
<select id="mySelect">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
过去你会这样初始化它:
$("#mySelect").select2().select2("val","audi");
这已被替换为:
$("#mySelect").select2();
$("#mySelect").val("audi").trigger("change");
对你来说,我想这会转化为:
$('#soff_gar').select2(
placeholder: "Scegli",
initSelection: true
);
$('#soff_gar').val(<?php echo $garante; ?>).trigger("change");
不过,您是否有任何理由以编程方式执行此操作?
参考我的例子,这也可以:
<option value="audi" selected>Audi</option>
HTH
【讨论】:
所以重点是触发器(“更改”)!谢谢!我阅读了您在回答中提到的注释,但没有明白这一点。我编写代码的原因在于我如何构建页面并提高代码可读性 触发选择有效,但它确实是触发更改事件,所以如果更改后有重定向,页面将立即重定向。它对我有用: $("#mySelect").val("audi").select2();<option value="audi" selected>Audi</option>
为我工作。以上是关于select2 设置选中值新方法的主要内容,如果未能解决你的问题,请参考以下文章