首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 ><Enter>上的Submit jQuery UI对话框

<Enter>上的Submit jQuery UI对话框
EN

Stack Overflow用户
提问于 2009-05-15 14:09:09
回答 18查看 90.1K关注 0票数 131

我有一个带有窗体的jQuery UI对话框。我想模拟单击对话框中的一个按钮,这样您就不必使用鼠标或tab键切换到它。换句话说,我希望它像一个常规的GUI对话框,模拟点击"OK“按钮。

我认为这可能是对话框的一个简单选项,但我在jQuery UI documentation中找不到它。我可以用keyup()绑定每个表单输入,但不知道是否有更简单、更干净的方法。谢谢。

EN

回答 18

Stack Overflow用户

发布于 2010-05-14 22:09:42

代码语言:javascript
复制
$('#dialogBox').dialog('open');
$('.ui-dialog-buttonpane > button:last').focus();

它与最新版本的JQuery UI (1.8.1)配合使用非常出色。您还可以使用:first而不是:last,这取决于要将哪个按钮设置为默认按钮。

与上面选择的解决方案相比,此解决方案的优点是显示哪个按钮是用户的默认按钮。用户还可以在按钮之间使用Tab键,按ENTER键将单击当前焦点所在的按钮。

干杯。

票数 13
EN

Stack Overflow用户

发布于 2009-12-03 06:35:06

一种粗略但有效的方法使其更具一般性:

代码语言:javascript
复制
$.fn.dlg = function(options) {
    return this.each(function() {
             $(this).dialog(options);
             $(this).keyup(function(e){
                  if (e.keyCode == 13) {                
                       $('.ui-dialog').find('button:first').trigger('click');
                  }
             });
    });
}

然后,当您创建一个新对话框时,您可以这样做:

代码语言:javascript
复制
$('#a-dialog').mydlg({...options...})

然后像普通的jquery对话框一样使用它:

代码语言:javascript
复制
$('#a-dialog').dialog('close')

有一些方法可以改进这一点,使其在更特殊的情况下工作。使用上面的代码,它将自动选择对话框中的第一个按钮作为按下enter时要触发的按钮。此外,它还假设在任何给定时间只有一个活动对话框,但情况可能并非如此。但你明白我的意思。

注意:如上所述,按enter时所按的按钮取决于您的设置。因此,在某些情况下,您可能希望在.find方法中使用:first选择器,而在其他情况下,您可能希望使用:last选择器。

票数 6
EN

Stack Overflow用户

发布于 2011-05-14 01:53:31

您可以绑定到对话框中表单的提交事件,然后执行以下操作,而不是像这个答案中那样监听关键代码(我不能正常工作):

代码语言:javascript
复制
$("#my_form").parents('.ui-dialog').first().find('.ui-button').first().click();

所以,整个事情应该是这样的

代码语言:javascript
复制
$("#my_form").dialog({
  open: function(){
    //Clear out any old bindings
    $("#my_form").unbind('submit');
    $("#my_form").submit(function(){
      //simulate click on create button
      $("#my_form").parents('.ui-dialog').first().find('.ui-button').first().click();
      return false;
    });
  },
  buttons: {
    'Create': function() {
      //Do something
    },
    'Cancel': function() {
      $(this).dialog('close');
    }
  }
});

请注意,不同的浏览器对Enter键的处理方式不同,有些浏览器并不总是在enter键上执行提交。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/868889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档