我的页面上有一个按钮。我需要在用户点击它时打开一个对话框(我使用的是JQuery UI)。
Dialog有两个按钮:运行服务器代码或关闭对话框。
问题是只有当OnClientClick返回false时,对话框才能等待用户操作,但在这种情况下,OnClick不会被激活。
到目前为止,我有了这段代码,对话框窗口在打开后片刻关闭。 有什么想法吗?
$(function () {
$("#dialog-confirm").dialog({
autoOpen: false,
resizable: false,
height: 240,
width: 440,
modal: true,
buttons: {
"RUN SERVER PART": function () {
$(this).dialog("close");
return true;
},
"CLOSE": function () {
$(this).dialog("close");
return false;
}
}
});
});
function shwindow() {
if ($("#dialog-confirm").dialog("open"))
return true;
else
return false;
}
<asp:Button ID="aspbt" runat="server" OnClientClick="if(!shwindow()) return false;" OnClick="aspbt_Click" />
答案 0 :(得分:0)
function shwindow() {
if($("#dialog-confirm").dialog("isOpen")){
return true;
}
else{
return false;
}
}
使用'isOpen'可以看到检查对话框是否可见。基于该返回true或false。
更新
if($(".ui-dialog").is(":visible")){
}
演示:
答案 1 :(得分:0)
设法通过将FALSE设置为返回值并调用回发来推迟OnClick事件:
"RUN SERVER PART": function () {
$(this).dialog("close");
__doPostBack($("[id$=aspbt]")[0].name, '');
return true;
}
我不太喜欢这种解决方案,所以也许有人有更好的解决方案......
答案 2 :(得分:0)
试试这个:
<asp:Button ID="aspbt" runat="server" OnClientClick="return shwindow();" OnClick="aspbt_Click" />