jQgridフォームにはいくつかのjQueryUIオートコンプリートボックスが含まれています。jqueryUIのオートコンプリートドロップダウンボックスが開いているかどうかを確認する方法
keydownイベントハンドラでEscキーを押す必要があるのは、オートコンプリートドロップダウンボックスが開いていない場合のみです。オートコンプリートドロップダウンが開いている場合は、Escを押してデフォルトのアクションのみを実行します(ドロップダウンを閉じて選択をキャンセルします)。
オートコンプリートドロップダウンが開いているかどうかを確認するにはどうすればよいですか? 文書本体に開かれたオートコンプリートボックスがあるかどうかを確認できます。
jQuery.extend(jQuery.jgrid.edit, {
beforeShowForm: function ($form) {
var gridIdEncoded = $.jgrid.jqID($form[0].id.substring(8));
$("#editmod" + gridIdEncoded).bind('keydown.formEvent', function (e) {
if (e.which === 27) {
// Todo: How invoke click only if any autocomplete dropdown is not opened
$("#TblGrid_" + gridIdEncoded + "_2 #cData").trigger("click");
return false;
}
});
}
});
更新
私は博士モールが
if (e.which === 27) {
alert($('.ui-autocomplete.ui-widget:visible').length);
if ($('.ui-autocomplete.ui-widget:visible').length != 0)
// dropdown is open, allow default behaviour
return;
を使用して答えてみましたが、$( 'UI-autocomplete.uiウィジェット:。目に見える')。長さは、ESC場合は0であります(他のキーが押され、ドロップダウンが開いている場合は1になります)。 Escの原因により、最初にこのドロップダウンを閉じると自動補完のデフォルト動作が発生するようです。 この後、私のハンドラはそのドロップダウンが見つからないexecutudが実行されます。
これをどのように修正しますか?
私はこの答えを理解していません。これは、オートコンプリートドロップダウンクロージングをブロックします。 'keydown.formEvent'メソッドでclose autocompleteを手動で追加する必要がありますか?ドロップダウンを閉じるにはどのコードを使用する必要がありますか? – Andrus