Selectize.js onFocus回调无法正常工作

时间:2015-03-11 23:08:56

标签: jquery onfocus selectize.js

我有一个使用jquery Selectize.js插件的下拉选择框。我想要它做的是在显示到字段时不显示下拉选项,但仍然通过任何其他方式打开下拉列表。

我已设置' openOnFocus:false'防止它在第一次获得焦点时打开下拉,这是有效的。但是,如果使用鼠标,我不希望用户必须双击。所以我尝试设置onFocus回调以检查Tab键是否被按下,如果没有,则再次给它焦点。 onFocus似乎没有激发过。我添加了Console.log以验证它不是。有什么建议?有没有更好的方法来解决这个问题?谢谢!

这是我的代码。

$("#branch_entry").selectize({      
  hideSelected: true,               
  sortField: "value",               
  openOnFocus: false,
  onFocus: function() {
    console.log("focus");                                      
    var code = e.keyCode || e.which;
    if (code != 9) {    // not tab  
      $("#branch_entry").focus();   
    }                               
  }                                 
});  

1 个答案:

答案 0 :(得分:2)

我认为你必须在selectize input元素中处理click事件并调用selectize.open()方法。

HTML:

<div id="branch_entry-div">
  <select id="branch_entry">
    <option value="0">Item 0</option>
    <option value="1">Item 1</option>
    <option value="2">Item 2</option>
  </select>
</div>

JavaScript的:

$("#branch_entry").selectize({      
  hideSelected: true,               
  sortField: "value",               
  openOnFocus: false
});
$("#branch_entry-div .selectize-input").on('click', function() {
  $("#branch_entry")[0].selectize.open();
});

jsFiddle Demo