テキストボックスとJqueryUIダイアログがあります。ユーザーがテキストボックスへの入力を完了してEnterキーを押したら、ダイアログを表示します。これを実現するために、次のコードを使用します。
$(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
が2回呼び出されることです。1回目はイベントハンドラーinput.focusout()
のの直後から2回目です。これにより、2つの背景オーバーレイが作成され、ダイアログを閉じても1つのオーバーレイが表示されたままになります。helpDial.dialog('open')
focusout
私は何が間違っているのですか?このシナリオを処理するためのより良い方法はありますか?'テキストフィールドでEnterキーを押すと、jQueryダイアログが開きます'。ありがとう。