jquery - 如何避免 bootstrap 的 select2() 插件中出现重复条目

标签 jquery ruby-on-rails twitter-bootstrap jquery-select2

在 Rails 4.0 中,我使用 select2() 插件。在此字段中,我只需要输入唯一的标签,但现在它接受重复的条目。如何避免重复输入?请帮我解决这个问题。

在 View 中,

<script type="text/javascript">
 $('#DIV_USERNAME').select2({
  placeholder: "Search for a names",
  multiple: true,
  ajax: { 
    url: "autocomplete/names",
    dataType: 'json',
    data: function (term) {
    return { q: term };
   },
   results: function (data) {
     return {results: data};
   }
  },
  createSearchChoice: function (term) {
    return { id: term, text: term };
  }
 });
</script>

最佳答案

检查以下On Selecting事件,并在createSearchChoice中设置isNew属性

如果它解决了您的问题,请告诉我

$('#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;
                    }
                });
            }
        })

关于jquery - 如何避免 bootstrap 的 select2() 插件中出现重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19398202/

相关文章:

javascript - 链接上的触发事件不起作用

javascript - 缩放jqplot后获取 Canvas 中的数据点列表

ruby-on-rails - Ruby 将方法发送到 Array#map

html - block Bootstrap 作为平板电脑大小

javascript - 我应该在哪里托管用于 ajax 调用的 php 文件?

javascript - 如何使用 jquery 选择具有以特定字符串开始和结束的类的元素?

ruby-on-rails - Phusion Passenger 以 root 身份运行,非 root 用户可以更改 Passenger 根路径 () 的一部分

ruby-on-rails - 如何修复此语法错误?

html - IE 和 Firefox 忽略最大宽度样式

html - 用对 Angular 线拆分两个 div,缩放到内容