【问题标题】:SELECT2 -> Add data without replacing contentSELECT2 -> 添加数据而不替换内容
【发布时间】:2014-02-23 12:53:07
【问题描述】:

我查看了其他一些线程,但没有那么具体。这并不是我认为很难的事情,但我不确定该怎么做。

目前我正在使用 Select2 作为标签系统,在它旁边我建议了用户可以点击的标签,它将添加到框中。

相反,每个标签都在替换内容并添加自己。

我需要将添加内容附加到框中,而不替换其中已有的内容。

这是我的代码:

$(document).on('click', ".tag1", function () {
      var value = $(".tag1").html();
      console.log(value);
      $("#selectPretty").val([value]).trigger("change");
});
$(document).on('click', ".tag2", function () {
      var value = $(".tag2").html();
      console.log(value);
      $("#selectPretty").val([value]).trigger("change");
});

通过 AJAX 提取数据,每个建议的标签都有一个跨度。

希望我已经足够清楚了。

总结:我希望能够点击每个“标签”并添加它,而不是替换框中已有的内容。

谢谢

【问题讨论】:

    标签: javascript jquery html jquery-select2


    【解决方案1】:

    您应该可以通过简单的方式做到这一点:

    var test = $('#test');
    
    $(test).select2({
        data:[
            {id:0,text:"enhancement"},
            {id:1,text:"bug"},
            {id:2,text:"duplicate"},
            {id:3,text:"invalid"},
            {id:4,text:"wontfix"}
        ],
        multiple: true,
        width: "300px"
    });
    var data = $(test).select2('data');
    data.push({id:5,text:"fixed"});
    $(test).select2("data", data, true); // true means that select2 should be refreshed
    

    工作示例:http://jsfiddle.net/z96Ca/

    【讨论】:

    • 非常感谢,最后三行在传递给我的代码时运行良好!
    【解决方案2】:

    您正在将值替换为 val(mystuff)。您想要执行以下操作:

    1. 用val()获取输入中的当前数据

      var dataOld = $('#selectPretty').val();

    2. 用*之类的东西附加新数据

      var dataNew = dataOld.push(value);

    3. 将输入数据设置为新数据:

      $('#selectPretty').val(dataNew);

    *这假设 val() 返回一个数组

    Docs

    【讨论】:

    • 嗨托马诺!非常感谢您对此的帮助。我的控制台中似乎出现 push 方法错误:未捕获的 TypeError: Object # has no method 'push'
    • 好吧,data() 返回一个对象,而不是一个数组。如果你console.log(dataOld); 它说什么?
    • 对象 {select2: 构造函数, select2ChangeTriggered: false} select2: 构造函数 select2ChangeTriggered: false proto: Object
    • 更新了我的答案,试试吧。
    • 当标签位于文本框区域时,我现在收到此错误(tagText 是预先在框中的标签)未捕获的 TypeError: Object tagText has no method 'push' - 再次感谢您的帮助有了这个。欣赏它。
    猜你喜欢
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多