1

背景

使用 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' );
    }
  });

每当表单的任何字段具有焦点时,这都会按预期工作(触发“接受”按钮并且服务器接收值就好了)。

问题

当显示对话框但没有字段具有焦点时(例如,用户单击上图中的“鱼片”),然后按 ENTER,则不会触发 keyup 事件。

问题

当表单没有焦点但 jQuery 对话框仍然打开时,如何接收 ENTER 事件?(与 jQuery 对话框接收 ESC 键以取消和关闭对话框的方式相同。)

谢谢!

4

1 回答 1

1

我在正文上添加了触发器,然后检查表单是否可见。

$('body').keyup(function( e ) {
  if( e.keyCode == $.ui.keyCode.ENTER ) {
    if( $("#myform").is(":visible") ) {
      // Enter was pressed and form is visible
    }
  }
});
于 2012-04-24T19:58:20.573 回答