我有一個文本框和一個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