我有一个文本框和一个Jquery UI对话框。当用户输入文本框并按下Enter键时,我想显示对话框。为了实现这个目标我使用下面的代码:Focusout被触发两次
$(document).ready(function() {
var helpDial = $('#helpDialog');
var input = $('#helpSearch');
helpDial.dialog({
width: 800,
autoOpen: false,
modal: true,
title: "Templates",
position: [165, 158]
});
input.focusin(function() {
helpDial.dialog('close');
}).focusout(function() {
helpDial.dialog('open');
}).on('keypress', function (e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
input.focusout();
return false;
}
});
});
<input id="helpSearch" />
<div id="helpDialog"></div>
的问题是,当我按下Enter键,focusout
被称为两次,一次从input.focusout()
和第二次helpDial.dialog('open')
之后在focusout
事件处理程序中。这会导致创建两个背景叠加层,并且当关闭对话框时,一个叠加层仍然可见。
我在做什么错?有没有更好的方法来处理这种情况 - “在文本字段中按下一个输入打开一个jQuery对话框”。谢谢。
当输入失去焦点并且用户按下Enter键时,是否要显示对话框? – banzomaikaka 2012-07-29 23:49:49
是的,就是这样 - 当文本框失去焦点或按下输入时 – user1044169 2012-07-30 00:46:58