【发布时间】:2011-11-01 16:31:57
【问题描述】:
嗯,我有一个表单,当用户点击这个或那个元素时,它会在模式对话框中弹出。根据所击中的内容,对话行为应略有改变。例如,默认情况下,对话框应同时具有 [OK] 和 [Cancel] 按钮,以及右上角的 [X] 关闭按钮。但有时我希望隐藏 [X] 和 [Cancel] 按钮并禁用转义。表单 ID 和字段集保持不变。
我尝试了以下方法:
var dlg1 = $('#dlgForm').dialog({
autoOpen: false,
modal: true,
width: 607,
resizable:false,
buttons: {
Submit: function() {
// some actions here
$(this).dialog("close");
return false;
},
Cancel: function() {
$(this).dialog("close");
}
},
close: function() {
$('#dlgForm input[type="text"]').val(null);
}
});
var dlg2 = $('#dlgForm').dialog({
autoOpen: false,
modal: true,
width: 607,
resizable:false,
dialogClass: 'noCloseButton',
closeOnEscape: false,
buttons: {
Submit: function() {
// some actions here
$(this).dialog("close");
return false;
}
},
close: function() {
$('#dlgForm input[type="text"]').val(null);
}
});
$("#button1").click( function() {
dlg1
.dialog('option', 'title', 'New Title')
.dialog('open');
});
$("#button2").click( function() {
dlg2
.dialog('option', 'title', 'New Title')
.dialog('open');
});
现在,问题是,如果我点击 button1 以显示 dlg1,然后关闭它,然后点击 button2,选项不会改变。显示的对话框仍然有来自 dlg1 的选项。反之亦然,如果首先显示 dlg2,则 button1 处理程序不会覆盖对话框选项。我哪里错了?提前非常感谢。
由于不允许在 8 小时之前回答自己的问题,我正在编辑问题以提供答案:
好吧,我想通了。我最终做了以下事情:
var dlg1 = function() {
return $('#dlgForm').dialog({
autoOpen: false,
modal: true,
width: 607,
resizable:false,
buttons: {
Submit: function() {
// some actions here
$(this).dialog("close");
return false;
},
Cancel: function() {
$(this).dialog("close");
}
},
close: function() {
$('#dlgForm input[type="text"]').val(null);
}
})
}
var dlg2 = function() {
return $('#dlgForm').dialog({
autoOpen: false,
modal: true,
width: 607,
resizable:false,
dialogClass: 'noCloseButton',
closeOnEscape: false,
buttons: {
Submit: function() {
// some actions here
$(this).dialog("close");
return false;
}
},
close: function() {
$('#dlgForm input[type="text"]').val(null);
}
});
}
$("#button1").click( function() {
dlg1()
.dialog('option', 'title', 'New Title')
.dialog('open');
});
$("#button2").click( function() {
dlg2()
.dialog('option', 'title', 'New Title')
.dialog('open');
});
就是这样!感谢大家的帮助。
【问题讨论】:
标签: jquery-ui jquery-ui-dialog