我有一个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
事件。
这里的问题是它同时触发OnClientClick
和OnClick
。即使我没有点击任何按钮,它也会显示模态弹出,然后页面回发。
处理程序:
function btn1ClickHandler() {
// Ok button
return true;
}
function btn2ClickHandler() {
// Cancel button
}
答案 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;
}
};