点击任何地方的jQuery Select2清除输入值?

时间:2014-12-12 05:42:09

标签: jquery jquery-select2

我正在开发一个项目,我正在使用jquery select2来制作标签。除了一件事,一切都很好。 Select2强制清除输入值(不是作为标记创建的),点击外部。

例如,

。 在下面的屏幕截图中,当我输入xyz并在标签选择器外单击时,它会清除xyz。  enter image description here

我不想清除价值。

如何强制Select2不清除值?

我谷歌但它没有运气,而且select2 docs也没有选项

http://ivaynberg.github.io/select2/

这就是我正在使用的方式

HTML

<input type="hidden" id="tagSelect" value="brown,red,green" style="width:300px;" />

JS

$('#tagSelect').select2({
 tags: ["red", "green", "blue"],
 minimumResultsForSearch: -1,
 dropdownCss:{"display": "none"},
 tokenSeparators: [",",13," "]
});

1 个答案:

答案 0 :(得分:4)

在Select2代码中花了一些时间后,我终于找到了覆盖clearSearch函数的解决方案,因此在用户将其设置为标记之前,它不会清除该值。

Select2为我们提供了覆盖任何功能的选项。

window.Select2他们将select2对象插入到windows对象中,所以如果我们需要任何自定义

CODE:

        window.Select2.class.multi.prototype.clearSearch=function(){
            var placeholder = this.getPlaceholder(),
                maxWidth = this.getMaxSearchWidth();
           // CurrentThisInput=(this.search); i used this to get the current select2 element and make further action if required.
            if(this.search.val()!=""){}else
            if (placeholder !== undefined  && this.getVal().length === 0 &&  this.search.val()=="") {
                this.search.val(placeholder).addClass("select2-default");
                this.search.width(maxWidth > 0 ? maxWidth : this.container.css("width"));
            }
        }

谢谢大家的支持