我正在使用Koenpunt 的选择分支,它允许我在配置对象中使用“create_option”选项。
它为用户提供了一种整洁的方式,即在选择框中不可用时创建元素。
现在它通过让用户点击出现在框中的“创建新事物”链接来工作,但我希望它自动创建这些新选项。这可能吗?有我应该触发的事件吗?
我正在使用Koenpunt 的选择分支,它允许我在配置对象中使用“create_option”选项。
它为用户提供了一种整洁的方式,即在选择框中不可用时创建元素。
现在它通过让用户点击出现在框中的“创建新事物”链接来工作,但我希望它自动创建这些新选项。这可能吗?有我应该触发的事件吗?
据我了解,
Chosen.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的不同之处。
我建议您看一下selectize.js,它具有您正在寻找的确切功能(即创建模糊选项)。
Select2也是另一种选择,它也具有您期望的相同标记功能(请参阅演示底部的“标记支持”部分)。
编辑:添加 Select2