Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search JQGrid:在过滤器工具栏中剪切和粘贴不会触发过滤_Search_Jqgrid_Toolbar - Fatal编程技术网

Search JQGrid:在过滤器工具栏中剪切和粘贴不会触发过滤

Search JQGrid:在过滤器工具栏中剪切和粘贴不会触发过滤,search,jqgrid,toolbar,Search,Jqgrid,Toolbar,我的经历与报告中的完全相同 如果我通过鼠标将某些文本复制并粘贴到搜索字段中(即右键单击“粘贴”),则不会触发搜索。如果我通过键盘复制和粘贴(例如Ctrl+C和Ctrl+V),则会触发搜索 也就是说,搜索似乎仅在按键/keyup时触发-如何配置网格以识别鼠标粘贴事件?您可以尝试两个选项 选项1: 设置工具栏时,只需将选项:SearchOneNet设置为true,即可将工具栏设置为按enter键搜索。这将要求在进行筛选之前单击enter,而不管它是如何输入的 $("#grid_id").jqGrid

我的经历与报告中的完全相同

如果我通过鼠标将某些文本复制并粘贴到搜索字段中(即右键单击“粘贴”),则不会触发搜索。如果我通过键盘复制和粘贴(例如Ctrl+C和Ctrl+V),则会触发搜索


也就是说,搜索似乎仅在按键/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。。。。此解决方案的问题在于,当您将值粘贴到高级搜索表单的文本字段时,它会触发工具栏搜索,而不是我想要的行为。