【问题标题】:Restore pre-selected values in Chosen Select在选择的选择中恢复预先选择的值
【发布时间】:2016-06-13 03:08:12
【问题描述】:

In the fiddle attached, I have two options pre-filled "Denmark" and "France", when the chosen select loads.如果我在选择框中选择更多值并单击清除按钮,我想使用相同的预填充值“丹麦”和“法国”恢复选择的选择。

我想更改此代码以预填充选定的值。

$("#Clear").click(function () {
    $('.chosen-select option').prop('selected', false).trigger('chosen:updated');
});

JSFiddle

更新: 如果有一种方法可以让预先填写哪些选项无关紧要,但如果有的话,应该恢复它们。

【问题讨论】:

    标签: jquery jquery-chosen


    【解决方案1】:

    试一试

    $("#countries").chosen();
    
    $("#Clear").click(function () {
        $('.chosen-select option').prop('selected', false);
        $('.chosen-select').val(['Denmark', 'France']).trigger('chosen:updated');
    });
    

    http://jsfiddle.net/y5cnd018/

    【讨论】:

    • 这也可以,但是有没有办法做到这一点,预先填充哪些选项并不重要,但如果有的话,它们应该被恢复? Jose 在上面给出了一个很好的解决方案,但想知道 selected 是否有一些已经这样做的东西,就像你提供的那样。
    【解决方案2】:

    您需要创建一个预选选项值的数组。然后你可以使用forEach循环这个数组来改变selected的值,得到触发器更新前的初始状态。

    $("#countries").chosen();
    
    let preselected = [];
    
    $('[selected]').each((i, node) =>{
      preselected.push($(node).attr('value'));
    });
    
    $("#Clear").click(function () {
        $('.chosen-select option').prop('selected', false);
    
        preselected.forEach(pre => {
          $(".chosen-select option[value='" + pre + "']")
          .attr('selected', 'selected')
          .trigger('chosen:updated');
        });
    });
    

    Fiddle

    如您所见here 插件中没有任何内容可以用来实现此目的,看来您必须通过更改 DOM 并触发更新来做到这一点。我会使用luckyape answer和我的代码,混合它。

    【讨论】:

    • 有没有办法做到这一点,预先填写哪些选项并不重要,但如果有的话,应该恢复它们?
    • 那么你可以在加载时循环以了解选择了哪些元素并检索它。
    • @Jake 上一个 sn-p 在您按下清除按钮时冻结页面,触发循环内的事件解决它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多