【问题标题】:ASP.Net Checkbox Confirm Message not workingASP.Net 复选框确认消息不起作用
【发布时间】:2014-09-23 16:28:26
【问题描述】:

我有一个复选框,希望在单击时显示确认消息

我在代码隐藏文件中添加了事件绑定,如下所示。

chkSMTLock.Attributes.Add("onclick", "return ConfirmSMTLock();");

以下是我的 chkSMTLock

的 HTML 代码
<asp:CheckBox ID="chkSMTLock" runat="server" AutoPostBack="true" OnCheckedChanged="chkSMTLock_CheckedChanged" Text="SMT Lock" />

这是我的 javascript:

function ConfirmSMTLock() {
        var r = confirm('Are you sure that you want to SMT lock/unlock this account?');

        console.log(r);
        return r;
    }

当我运行它时,我可以在浏览器控制台日志中看到确认值(真/假),但是,它没有调用任何服务器端代码。

我的服务器端代码非常简单,带有日志记录...

protected void chkSMTLock_CheckedChanged(object sender, EventArgs e)
    {
        Utils.Debug("chkSMTLock_CheckedChanged");
    }

当我删除复选框的 javascript 事件绑定时,它会成功执行 ServerSide 事件。但是当我把它放回去时,它就停止工作了。

如何使用确认消息框进行控制?

【问题讨论】:

  • 你考虑过使用RegisterClientScriptBlock
  • 您是否尝试过使用onchange 属性而不是onclick
  • 如果我将其更改为“onchange”,它会执行代码,即使“确认”的返回值为 false。

标签: c# javascript asp.net


【解决方案1】:

您的验证太落后了。由于您有 AutoPostBack=true,因此您基本上在单击复选框时提交了一个表单,您的验证希望在表单级别。

Form.Attributes.Add("onclick", "return ConfirmSMTLock();");

然后在 ConfirmSMTLock() 中检查复选框的状态以查看是否需要触发确认对话框。这是我能想到的最简单的方法。

附带说明:如果您这样做:

chkSMTLock.Attributes.Add("onclick", "return false;");

复选框变为不可勾选

【讨论】:

    【解决方案2】:

    我找到了答案。由于 AutoPostBack = true,它会自动将帖子发送回服务器。因此,首先您需要从 html 代码中删除该属性。

    <asp:CheckBox ID="chkSMTLock" runat="server" OnCheckedChanged="chkSMTLock_CheckedChanged" Text="SMT Lock" />
    

    然后使用 ASP.Net 的 __doPostBack 函数实现 PostBack 行为。

    function ConfirmSMTLock() {
            var r = confirm('Are you sure that you want to SMT lock/unlock this account?');
    
            if (r == true)
            {
                __doPostBack("chkSMTLock", '');            
                return true;
            }
            return false;
        }
    

    打开Sasame!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 2019-02-16
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多