我有一个带有窗体的jQuery UI对话框。我想模拟单击对话框中的一个按钮,这样您就不必使用鼠标或tab键切换到它。换句话说,我希望它像一个常规的GUI对话框,模拟点击"OK“按钮。
我认为这可能是对话框的一个简单选项,但我在jQuery UI documentation中找不到它。我可以用keyup()绑定每个表单输入,但不知道是否有更简单、更干净的方法。谢谢。
发布于 2010-05-14 22:09:42
$('#dialogBox').dialog('open');
$('.ui-dialog-buttonpane > button:last').focus();
它与最新版本的JQuery UI (1.8.1)配合使用非常出色。您还可以使用:first而不是:last,这取决于要将哪个按钮设置为默认按钮。
与上面选择的解决方案相比,此解决方案的优点是显示哪个按钮是用户的默认按钮。用户还可以在按钮之间使用Tab键,按ENTER键将单击当前焦点所在的按钮。
干杯。
发布于 2009-12-03 06:35:06
一种粗略但有效的方法使其更具一般性:
$.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');
}
});
});
}
然后,当您创建一个新对话框时,您可以这样做:
$('#a-dialog').mydlg({...options...})
然后像普通的jquery对话框一样使用它:
$('#a-dialog').dialog('close')
有一些方法可以改进这一点,使其在更特殊的情况下工作。使用上面的代码,它将自动选择对话框中的第一个按钮作为按下enter时要触发的按钮。此外,它还假设在任何给定时间只有一个活动对话框,但情况可能并非如此。但你明白我的意思。
注意:如上所述,按enter时所按的按钮取决于您的设置。因此,在某些情况下,您可能希望在.find方法中使用:first选择器,而在其他情况下,您可能希望使用:last选择器。
发布于 2011-05-14 01:53:31
您可以绑定到对话框中表单的提交事件,然后执行以下操作,而不是像这个答案中那样监听关键代码(我不能正常工作):
$("#my_form").parents('.ui-dialog').first().find('.ui-button').first().click();
所以,整个事情应该是这样的
$("#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键上执行提交。
https://stackoverflow.com/questions/868889
复制相似问题