【问题标题】:Asp linkbutton always triggering OnClick eventasp linkbutton 总是触发 OnClick 事件
【发布时间】:2014-03-20 17:36:05
【问题描述】:

我有一个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。当我单击modal 上的Ok 时,它应该考虑OnClick 事件。

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

处理程序:

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

【问题讨论】:

  • 什么是btn1ClickHandler和btn2ClickHandler?
  • 试试 OnClientClick="return confirm()"

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


【解决方案1】:

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

或者简单地说:

OnClientClick="return confirm()"

【讨论】:

  • 我已经试过了。但是我的链接按钮不会再触发任何事件了。
【解决方案2】:

你可以像这样使用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;
}

【讨论】:

    【解决方案3】:

    我通过在if 语句上添加return false 以及使用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;
            }
        };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      相关资源
      最近更新 更多