4

我正在使用Koenpunt 的选择分支,它允许我在配置对象中使用“create_option”选项。

它为用户提供了一种整洁的方式,即在选择框中不可用时创建元素。

现在它通过让用户点击出现在框中的“创建新事物”链接来工作,但我希望它自动创建这些新选项。这可能吗?有我应该触发的事件吗?

4

2 回答 2

5

据我了解,

  1. 您正在尝试在 SearchBox 中输入选项时动态添加选项。
  2. Koenpunt 的 forkChosen.jquery.js仅通过单击“添加选项”链接才具有此功能。

让我保持简单,通过键事件(例如:输入键)触发添加选项链接会更好。经过长时间的多次尝试后,我找到了 opt 方法chosen.js

Chosen.prototype.keydown_checker = function(evt){
...
...
}

jQuery在初始化和Koenpunt 的 fork之后,在您的 html 文件中添加以下脚本Chosen.js

<script type="text/javascript"> 
    Chosen.prototype.keydown_checker = function(evt) {
       if( event.which === 13)  {   
        $(this.form_field).append('<option>' + $(evt.target).val() + '</option>');
        $(this.form_field).trigger('liszt:updated');
        this.result_highlight = this.search_results.find('li.active-result').last();
        return this.result_select(evt);
       }
    }
</script>

我正在尝试创建一个 JSFiddle,希望能得到它。

EDIT1:Atlast我在JSFIDDLE1中得到它

EDIT2:在尝试寻找方法时onBlur(),我得到了以下 opt 方法

AbstractChosen.prototype.input_blur = function(evt){
...
...
}

上述代码改动不大:

AbstractChosen.prototype.input_blur = function(evt) {
        $(this.form_field).append('<option>' + $(evt.target).val() + '</option>');
        $(this.form_field).trigger('liszt:updated');
        this.result_highlight = this.search_results.find('li.active-result').last();
        return this.result_select(evt);
    }

对应的JSFiddle2 希望你能找到这两个fiddles的不同之处。

于 2013-06-07T20:25:10.297 回答
4

我建议您看一下selectize.js,它具有您正在寻找的确切功能(即创建模糊选项)。

Select2也是另一种选择,它也具有您期望的相同标记功能(请参阅演示底部的“标记支持”部分)。

编辑:添加 Select2

于 2013-06-07T15:18:52.930 回答