有类似的问题,但他们无法帮助我解决这个问题。
当对话框打开并按Enter键时,我希望这相当于关闭对话框。
我写了以下内容但它不起作用。相反,在每个ENTER处,焦点都停留在触发对话框打开的元素上,从而产生多个实例。
由于
var $dialogError = $('<div id="dialogError"></div>').html(vGraph.getLastErrorMsg()).dialog({
autoOpen: false,
open: function() {
$("#dialogError").keydown(function(e) {
alert("enter");
if (e.keyCode == $.ui.keyCode.ENTER) {
$(this).dialog("close");
}
});
},
title: 'Error'
});
$dialogError.dialog('open');
答案 0 :(得分:2)
打开对话框后,可能会使用$('#dialogError').focus();
将焦点设置到dialogError元素,这样焦点就不再位于打开对话框的元素上,而是会捕获回车键。
答案 1 :(得分:1)
$(document).on('keypress', function(event) {
if (event.keyCode == $.ui.keyCode.ENTER) {
$('#dialogError').dialog('close');
}
});
无论对话框是否具有焦点,这都可以使用,这可能是你想要的。该对话框未打开时将执行此代码,但运行$('#dialogError').dialog('close');
将不会产生任何不利影响。
答案 2 :(得分:0)
尝试从false
处理程序返回keydown
:
open: function() {
$("#dialogError").keydown(function(e) {
alert("enter");
if (e.keyCode == $.ui.keyCode.ENTER) {
$(this).dialog("close");
return false;
}
});
},