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的小部件:可見')長度爲0,如果ESC (如果按下其他鍵並且下拉打開,則爲1)。 它看起來像導致Esc導致自動完成的默認行爲首先wthis關閉下拉。 只有在這之後,我的處理程序纔會執行,並且沒有發現執行下拉菜單。
這是怎麼解決的?
我不明白這個答案。這會阻止自動填充下拉式關閉。我應該在'keydown.formEvent'方法中手動添加關閉自動完成嗎?哪些代碼應該用於關閉下拉菜單? – Andrus