Asp linkbutton始终触发OnClick事件

时间:2014-03-20 09:11:56

标签: c# javascript asp.net modal-dialog

我有一个asp链接按钮:

<asp:LinkButton ID="lnkEdit" runat="server" onclick="Edit_Click" ClientIDMode="Static" OnClientClick="confirm()">Edit</asp:LinkButton>

var modalWin = new ModalPopupWindow();
function confirm() {
    var text = document.getElementById('lnkEdit').innerText;
    if (text == "Undo Changes") {
        modalWin.ShowConfirmationMessage("Any unsaved work will be discarded. Do you want to continue?", 200, 200, "Confirmation", "", "Ok", btn1ClickHandler, "Cancel", btn2ClickHandler);
    }
    else {
        return true;
    }
};

如果点击链接按钮,它会显示modal.ShowConfirmationMessage。当我点击Ok上的modal时,就应该考虑OnClick事件。

这里的问题是它同时触发OnClientClickOnClick。即使我没有点击任何按钮,它也会显示模态弹出,然后页面回发。

处理程序:

function btn1ClickHandler() {
    // Ok button
        return true;
    }
function btn2ClickHandler() {
        // Cancel button
    }

3 个答案:

答案 0 :(得分:0)

如果模式为“取消/否”,则需要您的Javascript代码在OnClientClick事件中返回false。这将阻止页面回发服务器OnClick事件。

或者简单地说:

OnClientClick="return confirm()"

答案 1 :(得分:0)

您可以使用if检查是否点击了OK按钮

if(modalWin.ShowConfirmationMessage("Any unsaved work will be discarded. Do you want to continue?", 200, 200, "Confirmation", "", "Ok", btn1ClickHandler, "Cancel", btn2ClickHandler))
{
  //Your code for Post_back as Ok button is clicked

}
else
{
  //Do Nothing as cancelled button is clicked.
   return false;
}

答案 2 :(得分:0)

我通过在return false声明中添加if并使用return confirm()"

解决了这个问题
function confirm() {
        var text = document.getElementById('lnkEdit').innerText;
        if (text == "Undo Changes") {
            modalWin.ShowConfirmationMessage("Any unsaved work will be discarded. Do you want to continue?", 200, 200, "Confirmation", "", "Ok", "btn1ClickHandler();", "Cancel", "btn2ClickHandler();");
            return false;
        }
        else {
            return true;
        }
    };
相关问题