【问题标题】:Select2 set selected value new methodselect2 设置选中值新方法
【发布时间】: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; ?>");

但它们都不起作用。我究竟做错了什么?有什么提示吗?

【问题讨论】:

    标签: jquery jquery-select2


    【解决方案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();
    • &lt;option value="audi" selected&gt;Audi&lt;/option&gt; 为我工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 2023-03-10
    • 2013-10-23
    • 2020-12-01
    相关资源
    最近更新 更多