jq网格搜索输入如果搜索框始终在页面上可见

时间:2011-05-27 14:34:42

标签: javascript search jqgrid

这是此问题的后续问题Possible to make jqGrid Search Box Stay on Page?

我找到了在输入键上进行网格搜索的方向,如果搜索框被弹出然后以正常方式关闭,但是,如果搜索表单总是如此,是否可以使输入键触发搜索可见?

编辑我们之间的文字,请问我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

你有可能。我想你仍然使用jqGrid 3.8.2。所以我会在答案中使用该版本。

您可以在the answer中找到解决方案的主要思路。为了更加小心,beforeShowSearch的代码应该稍微扩展一下:

beforeShowSearch: function($form) {
    // because beforeShowSearch will be called on all open Search Dialog,
    // but the old dialog can be only hidden and not destroyed
    // we test whether we already bound the 'keydown' event
    var events = $('.vdata',$form).data('events'), event;
    for (event in events) {
        if (events.hasOwnProperty(event) && event === 'keydown') {
            return;
        }
    }
    $('.vdata',$form).keydown( function( e ) {
        var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
        if (e.which == 13) { // save
            //$(".ui-search", $form).click();
            grid[0].SearchFilter.search();
        }
    });
}

这种方式适用于高级搜索对话框(请参阅the demo)以及始终位于网格上的对话框(请参阅another demo)。

更新:从jQuery 1.8开始,应该使用$._data($('.vdata',$form)[0], 'events');代替$('.vdata',$form).data('events')来获取网格中所有事件的列表。