使用jQuery模式对话框呈现表单。表单具有自动填充字段。当用户从自动完成下拉列表中选择一个选项时,表单将失去焦点。 jQuery对话框检测到ESC键,但从未检测到ENTER键。考虑几种形式之一(在同一页面上),有各种按钮:
检测何时按下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' );
}
});
当表单的任何字段具有焦点时,这可以按预期工作(“accept”按钮被触发,服务器接收值很好)。
当显示对话框但没有任何字段具有焦点时(例如,用户点击上图中的“鱼片”),然后按ENTER键,键盘事件永远不会被触发。
当表单没有焦点但jQuery对话框仍处于打开状态时,如何收到ENTER事件? (与jQuery对话框接收ESC按键以取消和关闭对话框的方式相同。)
谢谢!
答案 0 :(得分:1)
我在身体上添加了触发器,然后检查表单是否可见。
$('body').keyup(function( e ) {
if( e.keyCode == $.ui.keyCode.ENTER ) {
if( $("#myform").is(":visible") ) {
// Enter was pressed and form is visible
}
}
});