2

私はJQGridフォーラムで報告されたのとまったく同じ経験をしています。

マウスを使用してテキストをコピーして検索フィールドに貼り付ける(つまり、右クリックして「貼り付ける」)と、検索がトリガーされません。キーボードからコピーして貼り付けると(たとえば、Ctrl+CおよびCtrl+V)、検索がトリガーされます。

つまり、検索はキー押下/キーアップでのみトリガーされるようです-マウスの貼り付けイベントも認識するようにグリッドを構成するにはどうすればよいですか?

4

2 に答える 2

1

試すことができる2つのオプションがあります。

オプション1:

ツールバーを設定するときにオプションsearchOnEnterをtrueに設定することによってのみ、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を使用して検索をトリガーする方法はないようです。

于 2012-08-10T15:31:32.483 に答える
1

私はそれをクラックしたと思います。searchOptionsの「dataEvents」配列に「paste」イベントを追加できます。

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

setTimeout呼び出しに注意してください-追加する必要があることがわかりました。追加しないと、貼り付けられた値なしで検索がトリガーされます

このソリューションは、@ fbfcnによって提案されたオプション2とほぼ同じことを実現しますが、APIとよりクリーンに連携するため、私はそれがより好きです。

コメントありがとうございます!

于 2012-08-10T16:02:15.393 に答える