2

假设我想在允许他们保存记录之前提示用户。因此,假设我在标记中定义了以下按钮:

<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 方法。我需要一种使其“阻止”的方法,直到用户按下是或否按钮,然后返回真或假,以便根据用户的回答调用或不调用 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');

}
4

3 回答 3

2

我使用了一个回调函数,当他们单击一个特定按钮(如 Yes)时会引发该函数。您将无法在脚本中阻止执行,但也可以让 UI 响应用户操作。

于 2011-01-07T13:52:48.143 回答
2

这可以像使用当前的“保存”按钮触发确认对话框一样简单,然后在确认对话框中使用“是”按钮触发“btnSave_Click”事件

我想我起初误解了这个问题......这可能对你有一些帮助,虽然我没有测试过。http://tutorialzine.com/2010/12/better-confirm-box-jquery-css3/

于 2011-01-07T13:55:21.043 回答
1

如果在移动到 SAVE 等最终代码之前只需要一个最终确认框,那么这肯定有助于在回调函数中调用 SAVE() 函数以进行按钮单击。没关系。

我确实有另一个问题如下:我想在表单验证中使用这个自定义确认框,其中可能有多个案例和场景需要一个接一个地进行确认。

如果用户对第一个确认框说“是”,我们希望根据表单数据条件显示第二个确认框。

如果用户再次对第二个确认框说“是”,那么我们可能需要出示下一个确认框。这是问题所在,在这些情况下还不可能..

于 2012-02-02T09:58:09.713 回答