Search JQGrid:在过滤器工具栏中剪切和粘贴不会触发过滤
我的经历与报告中的完全相同 如果我通过鼠标将某些文本复制并粘贴到搜索字段中(即右键单击“粘贴”),则不会触发搜索。如果我通过键盘复制和粘贴(例如Ctrl+C和Ctrl+V),则会触发搜索Search JQGrid:在过滤器工具栏中剪切和粘贴不会触发过滤,search,jqgrid,toolbar,Search,Jqgrid,Toolbar,我的经历与报告中的完全相同 如果我通过鼠标将某些文本复制并粘贴到搜索字段中(即右键单击“粘贴”),则不会触发搜索。如果我通过键盘复制和粘贴(例如Ctrl+C和Ctrl+V),则会触发搜索 也就是说,搜索似乎仅在按键/keyup时触发-如何配置网格以识别鼠标粘贴事件?您可以尝试两个选项 选项1: 设置工具栏时,只需将选项:SearchOneNet设置为true,即可将工具栏设置为按enter键搜索。这将要求在进行筛选之前单击enter,而不管它是如何输入的 $("#grid_id").jqGrid
也就是说,搜索似乎仅在按键/keyup时触发-如何配置网格以识别鼠标粘贴事件?您可以尝试两个选项 选项1: 设置工具栏时,只需将选项:SearchOneNet设置为true,即可将工具栏设置为按enter键搜索。这将要求在进行筛选之前单击enter,而不管它是如何输入的
$("#grid_id").jqGrid('filterToolbar',{ searchOnEnter: true });
选项2:(更新以修复错误)
使用jQuery检测粘贴事件,然后调用api触发工具栏搜索
var headers = $('.ui-th-column');
$.each(headers, function(index, item) {
var div = $(this).children('div');
if (div.length > 0) {
var input = div.children('input');
if (input.length > 0) {
$(input).bind('paste', function(e) {
var sgrid = $("#grid_id")[0];
sgrid.triggerToolbar();
});
}
}
});
注意:似乎没有办法使用新的api触发搜索。我想我已经破解了它。您可以在searchOptions中的“dataEvents”数组中添加“粘贴”事件:
var colModel = [...,
searchoptions: {
dataEvents: [
{ type: 'paste',
fn: function(e) {
setTimeout(function() {
var sgrid = $("#grid_id")[0];
sgrid.triggerToolbar();
}, 1);
}
}
]}
];
注意setTimeout调用-我发现有必要添加,否则搜索会在没有粘贴值的情况下触发
这个解决方案实现了与@fbfcn提出的选项2大致相同的功能,但我更喜欢它,因为它将cleaner与API结合在一起
欢迎评论 我不喜欢使用选项1(searchOneNoter:true)将其标记为正确,因为如果您正在使用高级搜索对话框,我使用dataInit的答案会弄乱它。请注意,我仍然需要添加setTimeout调用,以使此工作+1 yes更干净,并且不需要我必须执行的所有选择器。Argg。。。。此解决方案的问题在于,当您将值粘贴到高级搜索表单的文本字段时,它会触发工具栏搜索,而不是我想要的行为。