首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Select2多选复制值

Select2多选复制值
EN

Stack Overflow用户
提问于 2013-02-20 17:15:58
回答 3查看 13.2K关注 0票数 6

http://jsfiddle.net/tXFbk/2/

HTML:

代码语言:javascript
代码运行次数:0
运行
复制
<div class="control-group">
    <label for="some_id" class="control-label">Some ID</label>
    <div class="controls">
        <input type="text" id="some_id" name="some_id" class="span4"/>
    </div>
</div>

JS:

代码语言:javascript
代码运行次数:0
运行
复制
$(function() {
    $('#some_id').select2({
        allowClear: true,
        placeholder: 'Some ID',
        minimumInputLength: 2,
        multiple: true,
        data: [
            {id: 1, text: 'some text'},
            {id: 2, text: 'some other text'},
            {id: 3, text: 'some more text'}
        ]
    });
    $('#some_id').select2('data', [
        {'id':1,'text':'some text'}
    ]);

    console.log($('#some_id').select2('val'));
});

在第一次加载时,它复制值,在清除值之后,它不会从输入中清除它。此外,如果您添加一个项目(例如,“更多的文本”),然后将其删除,并不会将其从输入值中清除。有没有办法让它停止复制值?还有一件事-如何禁止添加已经添加的项目?

EN

回答 3

Stack Overflow用户

发布于 2016-03-16 14:06:31

Select2 4.0.0支持重复标签。

Jsfiddle Demo link

代码语言:javascript
代码运行次数:0
运行
复制
$eventSelect.on("select2:select", function (e) { 
    log("select2:select", e);
  $eventSelect.append('<option value="'+e.params.data.text+'">' +e.params.data.text + '</option>');
});

$eventSelect.on("select2:unselect", function (e) { 
    log("select2:unselect", e); 
    e.params.data.element.remove();
});

function formatResultData (data) {
  if (!data.id) return data.text;
  if (data.element.selected) return
  return data.text;
};

基于select2事件和github issues

图片:

票数 2
EN

Stack Overflow用户

发布于 2015-03-02 18:56:53

createSearchChoice中选择事件并设置isNew属性时,请检查以下

让我知道它是否解决了您的问题

代码语言:javascript
代码运行次数:0
运行
复制
$('#some_id').select2({
            tags: true,
            tokenSeparators: [","],
            createSearchChoice: function (term, data) {
                if (term.trim().length > 0) {
                    if ($(data).filter(function () {
                      return this.text.toLowerCase().localeCompare(term.toLowerCase()) === 0;
                    }).length === 0) {
                        return {
                            id: term,
                            text: term,
                            isNew: true // this is necessary to check if the item is newly added or not
                        };
                    }
                }
            },
            multiple: true,
            minimumInputLength: 1,
            allowClear: true,
            data: [
        {id: 1, text: 'some text'},
        {id: 2, text: 'some other text'},
        {id: 3, text: 'some more text'}
    ],
        }).on("select2-selecting", function (e) {
            var tagId = '';
            if (e.choice.isNew) {
                self.AddTagToDatabase(e.choice.text);
            } else {
                var isValidTag = true;
                $(config.element[0] + ' ul li').find('div').each(function (index, item) {
                    if ($(item).html().toLowerCase().trim() == e.choice.text.toLowerCase().trim()) {
                        isValidTag = false;
                        e.choice.text = '';
                        return;
                    }
                });
            }
        })
票数 1
EN

Stack Overflow用户

发布于 2014-04-09 15:10:49

您需要触发select2的change事件来反映这些更改。

代码语言:javascript
代码运行次数:0
运行
复制
$("#dropdownId").val("yourValues").trigger("change");

设置这些值后,您需要手动触发触发器值,以反映在下拉列表中所做的最新更改

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14976099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档