And*_*rus 6 javascript jquery jquery-ui jqgrid jquery-ui-autocomplete
jQgrid表单包含几个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;
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
更新
我试过Molle博士的回答
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;
Run Code Online (Sandbox Code Playgroud)
但$('.ui-autocomplete.ui-widget:visible').如果按下esc,则长度为0(如果按下其他键并且下拉列表打开则为1).它看起来像导致Esc导致自动完成默认行为首先wthis关闭下拉列表.只有在此之后,我的处理程序才是executud,它没有找到执行下拉列表.
如何修复这个?
Dr.*_*lle 13
使用:
!!$($('autocompleteselector').autocomplete('widget')).is(':visible')
Run Code Online (Sandbox Code Playgroud)
..检查特定的自动完成.
要检查是否有任何下拉列表,请使用:
!!$('.ui-autocomplete.ui-widget:visible').length
Run Code Online (Sandbox Code Playgroud)
安德鲁的评论是正确的。如果您在自动完成关闭后取消事件的传播,则会抑制 ESC
$('.autocomplete').bind('autocompleteclose', function(event, ui) {
return false;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9025 次 |
| 最近记录: |