Я хочу открыть диалоговое окно пользовательского интерфейса jQuery, когда пользователь нажимает клавишу ввода или пробела для данного элемента. Похоже, что клавиши ввода / пробела обрабатываются диалоговым окном, что вызывает нажатие элемента по умолчанию (кнопка отмены). Диалог закрывается почти сразу после открытия.
Вот упрощенная демонстрация:
<script type="text/javascript"> function Go() { $("#dialog").text("Are you sure?").dialog({ modal: true, buttons: { Cancel: function() { $("#dialog").dialog("destroy"); }, OK: function() { $("#dialog").dialog("destroy"); } } }); // end .dialog } </script> <input type="button" value="Test" onkeydown="Go()" /> <div title="Dialog" style="display: none;" id="dialog"></div>
Если кнопке предоставляется фокус, а затем пользователь нажимает пробел, открывается диалоговое окно, а затем немедленно закрывается. Если пользователь нажимает клавишу ввода, диалоговое окно закрывается так быстро, что даже не мигает (по крайней мере, так было в моем опыте с Firefox 3.5.3).
Как запретить диалоговому окну обрабатывать ключ из события onkeydown, которое вызвало открытие диалогового окна?