假设我想在允许用户保存记录之前提示用户。所以我们假设我在标记中定义了以下按钮:
<asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click"></asp:Button>
要使用普通的javascript强制提示,我可以将OnClick事件连接到我的保存按钮,就像这样(我可以在Page_Load
中执行此操作):
btnSave.Attributes.Add("onclick",
"return confirm('are you sure you want to save?');");
确认呼叫将阻止,直到用户实际按下是/否按钮,这是我想要的行为。如果用户按“是”,则会调用我的btnSave_OnClick
方法。
对于等效的jquery对话框,我尝试了类似的东西(见下文)。但问题是,与javascript confirm()不同,它会一直通过这个函数(displayYesNoAlert),然后进入我在C#端的btnSave_OnClick方法。我需要一种方法使其“阻止”,直到用户按下Yes或No按钮,然后返回true或false,以便根据用户的答案调用或不调用btnSave_OnClick。
目前,我只是放弃并使用javascript确认,我只是想知道是否有办法做到这一点。
function displayYesNoAlert(msg, closeFunction) {
dialogResult = false;
// create the dialog if it hasn't been instantiated
if (!$("#dialog-modal").dialog('isOpen') !== true) {
// add a div to the DOM that will store our message
$("<div id=\"dialog-modal\" style='text-align: left;' title='Alert!'>").appendTo("body");
$("#dialog-modal").html(msg).dialog({
resizable: true,
modal: true,
position: [300, 200],
buttons: {
'Yes': function () {
dialogResult = true;
$(this).dialog("close");
},
'No': function () {
dialogResult = false;
$(this).dialog("close");
}
},
close: function () {
if (closeFunction !== undefined) {
closeFunction();
}
}
});
}
$("#dialog-modal").html(msg).dialog('open');
}
答案 0 :(得分:2)
我使用一个回调函数,当他们点击特定按钮时会引发回复函数。您将无法阻止脚本中的执行,但也可以让UI响应用户操作。
答案 1 :(得分:2)
这可能就像使用当前的“保存”按钮来启动确认对话框一样简单,然后在“确认”对话框中使用“是”按钮触发“btnSave_Click”事件
我想我起初误解了这个问题......虽然我没有对它进行过测试,但这可能对你有所帮助。 http://tutorialzine.com/2010/12/better-confirm-box-jquery-css3/
答案 2 :(得分:0)
如果在转移到最终代码(例如SAVE)之前只需要一个最终的确认框,那么这肯定会有助于在回调函数中调用SAVE()函数以进行按钮单击。没关系。
我确实有另一个问题如下: 我想在表单验证中使用此自定义确认框,其中可能有多个案例和方案一个接一个地进行确认。
如果用户在第一次确认框中说“是”,我们希望根据表格数据条件提供第二个确认框。
如果用户再次对第二个确认框说“是”,那么我们可能需要提供下一个确认框。 这是问题,在这些情况下还不可能。