【问题标题】:Avoid having to press backspace before typing in selectize.js <select>避免在输入 selectize.js <select> 之前按退格键
【发布时间】:2020-10-23 04:14:17
【问题描述】:
我只有一个选择 <select> 元素,该元素使用 selectize.js 进行了增强。
<select> 元素有一个预选的<option>(当前值)。
如果用户想改变这个值,他们必须
- 点击下拉控件,
- 按退格键清除当前值,
- 开始输入他们的搜索并
- 从自动完成建议列表中选择匹配结果。
我们可以避免第 2 步(必须按退格键才能打字)吗?
用户应该能够单击控件并立即开始输入。
您是否知道一个 selectize.js 插件、一个配置参数或一个基于 jQuery 的事件处理函数来实现该行为?
【问题讨论】:
-
他们有一个onFocus 事件处理程序和一个用于项目的clear,我想你可以在onFocus 事件中调用它并且它会起作用
标签:
javascript
jquery
selectize.js
【解决方案1】:
谢谢你,@George!
确实是这样的:
$( 'form.myform select' ).selectize( {
create: false,
diacritics: false,
onFocus: function() { // <-
this.clear( false ); // <-
} // <-
} );
【解决方案2】:
试试这个(它存储以前的值,并在聚焦后恢复):
let value;
//...
//When opening dropdown get the value
onDropdownOpen: function() {
value = this.getValue();
this.clear(false)
},
//When closing empty dropdown, set the grabbed value
onBlur: function() {
if(this.getValue() == '') {
this.setValue(value);
}
},