バックグラウンド
jQuery モーダル ダイアログを使用してフォームを表示します。フォームにはオートコンプリート フィールドがあります。ユーザーがオートコンプリート ドロップダウンからオプションを選択すると、フォームはフォーカスを失います。jQuery ダイアログは ESC キーを検出しますが、ENTER キーは検出されません。さまざまなボタンを持つ (同じページ上の) いくつかのフォームの 1 つを検討してください。
コード
ENTER キーが押されたことを検出するソース コード:
$(form).keyup(function( e ) {
// Submit and close when Enter key pressed by triggering the accept button.
//
if( e.keyCode == $.ui.keyCode.ENTER ) {
sequenceNumber = 0;
$(this).parent().find( "#accept" ).trigger( 'click' );
}
});
これは、フォームのいずれかのフィールドにフォーカスがある場合はいつでも、期待どおりに機能します (「受け入れる」ボタンがトリガーされ、サーバーは値を正常に受け取ります)。
問題
ダイアログが表示されているがフィールドにフォーカスがない場合 (たとえば、ユーザーが上の画像で「魚の切り身」をクリックした場合)、Enter キーを押しても、keyup イベントは発生しません。
質問
フォームにフォーカスがなく、jQuery ダイアログがまだ開いている場合、どのようにして ENTER イベントを受け取ることができますか? (jQuery ダイアログが ESC キーを押してキャンセルし、ダイアログを閉じるのと同じ方法です。)
ありがとうございました!