我正在尝试使用弹出窗口调用 JavaScript 函数,如果用户单击“确定”,它会调用 C# 函数。但是页面总是在我加载 JavaScript 函数的同时回发。
我的 HTML ASP:按钮:
<asp:Button ID="PrchBtn" runat="server" class="PrchBtn" Text="<%$ Resources:Resource, WebEDI_Save %>" OnClick="PrchBtn_Click" OnClientClick = "Confirm();" />
OnClientClick,它调用这个 JS 函数:
function Confirm() {
var confirm_value = document.createElement("INPUT");
confirm_value.type = "hidden";
confirm_value.name = "confirm_value";
alertify.confirm('<%= GetGlobalResourceObject("Resource","WebEDI_PDF_MsgBox") %>', function (e) {
if (e) {
confirm_value.value = "Yes";
} else {
confirm_value.value = "No";
}
document.forms[0].appendChild(confirm_value);
});
}
然后是我的 C# 函数:
public void PrchBtn_Click(object sender, EventArgs e)
{
//Code here...
}
它使用一个简单的“确认”对话框。但我想自定义弹出窗口,这就是我使用“Alertify”库的原因。
谢谢你的帮助。
更新(见评论#3): 通过点击这个链接(从JavaScript调用函数背后的代码(不是AJAX!))这是我的实际代码:
<asp:Button ID="PrchBtn" runat="server" class="PrchBtn" Text="<%$ Resources:Resource, WebEDI_Save %>" OnClientClick="Confirm(); return false;" />
<asp:Button runat="server" ID="PrchBtnHidden" ClientIDMode="Static" OnClick="PrchBtn_Click" style="display:none;" />
function Confirm() {
var confirm_value = document.createElement("INPUT");
confirm_value.type = "hidden";
confirm_value.name = "confirm_value";
alertify.confirm('<%= GetGlobalResourceObject("Resource","WebEDI_PDF_MsgBox") %>', function (e) {
if (e) {
confirm_value.value = "Yes";
document.forms[0].appendChild(confirm_value);
__doPostBack('<%= PrchBtnHidden.UniqueID %>');
} else {
confirm_value.value = "No";
document.forms[0].appendChild(confirm_value);
__doPostBack('<%= PrchBtnHidden.UniqueID %>');
}
});
}
但问题是一样的,JS 和 C# 是同时做事的。
更新(奖励错误): 我不知道为什么,但我的 alertify 被窃听了。提示:
alertify.prompt("Message", function (e, str) {
// str is the input text
if (e) {
Console.Log("Ok");
} else {
Console.Log("No");
}
}, "Default Value");
当我单击“确定”或“否”时,没有任何反应。提示的 TextBox 内容为:
function (e, str) { // str 是输入文本 if (e) { Console.Log("Ok"); } else { Console.Log("No"); } }
并带有一个 Alertify.Confirm
alertify.confirm('<%= GetGlobalResourceObject("Resource","WebEDI_PDF_MsgBox") %>', function (e) {
if (e) {
confirm_value.value = "Yes";
document.forms[0].appendChild(confirm_value);
__doPostBack('<%= PrchBtnHidden.UniqueID %>');
} else {
confirm_value.value = "No";
document.forms[0].appendChild(confirm_value);
__doPostBack('<%= PrchBtnHidden.UniqueID %>');
}
});
只有“确定”在开火。取消按钮没有任何作用。
解决方案: 又拿了一个 alertify.js ( http://alertifyjs.com/ ) 这是我的 JS 函数:
alertify.confirm('<%= GetGlobalResourceObject("Resource","WebEDI_PDF_MsgBox") %>', function () {
confirm_value.value = "Yes";
document.forms[0].appendChild(confirm_value);
__doPostBack('<%= PrchBtnHidden.UniqueID %>');
},
function () {
confirm_value.value = "No";
document.forms[0].appendChild(confirm_value);
__doPostBack('<%= PrchBtnHidden.UniqueID %>');
}).set('labels', { ok: 'Ok', cancel: 'No' });
它有效!