ASP按钮 - 关闭OnClientClick对话框后运行OnClick

时间:2014-08-11 07:14:50

标签: javascript jquery asp.net jquery-ui

我的页面上有一个按钮。我需要在用户点击它时打开一个对话框(我使用的是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" />

3 个答案:

答案 0 :(得分:0)

function shwindow() {
  if($("#dialog-confirm").dialog("isOpen")){
    return true;
  }      
  else{
    return false;
  }
}

使用'isOpen'可以看到检查对话框是否可见。基于该返回true或false。

更新

if($(".ui-dialog").is(":visible")){

}

演示:

http://jsfiddle.net/fprvt2pq/

答案 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" />