我正在尝试自定义数据表搜索框,以便更好地将其集成到基于引导程序的 UI 中。我有一个表格控制栏“horicontal_group”,其中包含我想放置搜索框的其他控件。只要我能生成过滤事件,它就可以工作,但是有一个非常烦人的问题:
每次调用过滤器功能时,搜索框都会失去焦点。
这是权宜之计,因为我想要预先输入功能,而不是让用户单击按钮进行搜索。当然,我也会在按键和过滤事件之间实现延迟,但首先我必须处理这个焦点问题。
这是在数据表的 sDom 中使用默认 'f' 选项时 dom 的样子:
这就是我想要的:
wrapper_div.find('.dataTables_filter input')
.addClass('form-control tableview-search')
.appendTo(horicontal_group) //if this is uncommented, it works fine
.bind('keypress keyup', function(e){
datatable.fnFilter(searchTerm);
});
到目前为止我尝试过的(对结果没有任何影响):
- 使用新创建的输入字段而不是 sDom 参数“f”提供的字段(并从 sDom 中删除“f”)
- 在事件上使用 stopPropagation()
- 在绑定新事件之前取消绑定输入字段上的事件
- 使用 .on('input' ..) 而不是 .bind('keypress keyup' ..)
- 将整个 dataTables_filter div 附加到 horicontal_group 而不仅仅是输入字段