これは、ここで説明したjqGrid入力フィールドの更新に関する古いバグだと思います。次のコールバックを挿入してみてください
afterRedraw: function () {
$(this).find(".input-elm").triggerHandler('change', [true]);
}
ここのように。4.3.3の代わりにjqGrid4.4.1を使用することもできます。バージョンにはそのような問題はないはずです。
更新:以前に投稿してコミットした変更が元に戻されていることがわかりました。こちらをご覧ください。私の提案は多くの改善のコレクションでした:
- 検索ダイアログのボタンのスタイルは、jQueryUIやjqGridの他のすべての部分と同じように使用されました。
uiButtons: false
古いスタイルを使用するために使用できます。
- デフォルト名の「+」、「-」、「+ {}」ボタンと、現在のバージョンのjqGrid(、、、)でのみ英語で表示されるツールチップを
'Add rule'
変更'Delete rule'
でき'Add subgroup'
ます'Delete group'
。
- フォーカスは、入力コントロールまたはボタンに追加で設定されます。これにより、マウスを使用しなくても、キーボードで検索ダイアログを使用できます。
"change"
検索ダイアログからデータを最後に読み取る前に、すべての入力コントロールでイベントがトリガーされます。
最後の変更は、問題を解決するために重要な場合があります。
filterData関数の実装を変更する必要があります。行を追加する必要があります
$(this).find(".input-elm").each(function() {
$(this).triggerHandler("change");
});
行の前。
問題は、jqGridが'change'イベントを検索ダイアログのすべての入力フィールドにバインドすることです(行を参照)。ユーザーが入力すると、「変更」イベントを検索するためのデータがトリガーされ、内部データfilter
(行rule.data
のの一部であるをfilter
参照)が変更されます。ユーザーが[検索]ボタンをクリックすると、の現在の値が取得されます(行を参照)。問題は、[検索]ボタンでイベントを処理した後、一部のWebブラウザでイベントが処理されることです。そのため、最後の検索フィルターからの入力データはまだ設定されていません。以前のすべての入力コントロールの呼び出しfilter
change
'click'
.triggerHandler("change")
からのデータfilter
が返されると、問題が解決する可能性があります。いくつかの不要なchange
イベントが呼び出される可能性がありますが、filter
のデータがからのデータと同じであることを確認します。
変更を元に戻すのは悪い考えだったと思います。
searchOnEnter: true
オプションを使用し、キーを使用.triggerHandler("change")
して検索を開始する場合は、行が原因で問題が発生しないはずです。Enter
$("#"+fid+"_search").focus().click();
クリックイベントを処理する前に、フォーカスが明示的に[検索]ボタンに設定されます。このようにして、"change"
イベントは間接的にトリガーされ、のデータfilter
が更新されます。
イベントを直接トリガーすることなく、あなたが説明した問題を解決できると思いchange
ます。その代わりに、フォーカスの明示的な設定を含めることができます
$("#"+fid+"_search").focus();
click
イベントハンドラーの内部(行を参照)。呼び出される行の前に これを行うことが重要です。.jqFilter('filterData')