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

时间:2012-08-10 13:56:05

标签: search jqgrid toolbar

我的体验与the JQGrid forum中报告的完全相同。

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

即。似乎只在按键/键盘上触发搜索 - 如何配置网格以识别鼠标粘贴事件?

2 个答案:

答案 0 :(得分:1)

您可以尝试两种选择。

选项1:

您可以将工具栏设置为仅在设置工具栏时将选项:searchOnEnter设置为true进行搜索。这将要求在过滤器发生之前单击输入,无论输入方式如何

$("#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触发搜索。

答案 1 :(得分:1)

我想我已经破解了它。您可以添加"粘贴" " dataEvents"中的事件searchOptions中的数组:

var colModel = [...,
    searchoptions: {
        dataEvents: [
                       { type: 'paste',  
                         fn: function(e) { 
                           setTimeout(function() {
                             var sgrid = $("#grid_id")[0]; 
                             sgrid.triggerToolbar();
                           }, 1);   
                         }  
                       }
                    ]}
];

请注意setTimeout调用 - 我发现有必要添加,否则搜索会在没有粘贴值的情况下触发

这个解决方案或者与@fbfcn提出的选项2大致相同,但我更喜欢它,因为它与API更清晰。

评论赞赏!