【问题标题】:ASP.NET checkbox won't postback when onclick is defined定义 onclick 时,ASP.NET 复选框不会回发
【发布时间】:2019-05-10 18:42:24
【问题描述】:

我打算在这里回答我自己的问题 - 我认为这可能很难理解。我有两个复选框,其中第二个有一个回发,只有在第一个被选中时才会触发。这是我写的

    <asp:CheckBox ID="chkTC" runat="server" Text="I have read and accept the Terms & Conditions" /><br />
    <asp:CheckBox ID="chkRegister" runat="server" AutoPostBack="true" onclick =" var bOK = document.getElementById('chkTC').checked; if (!bOK) { alert('You must agree to the Terms and Conditions'); } return bOK; " />

onclick 代码是我在确定按钮是否应该回发时使用的代码的副本。

但是,即使第一个被勾选,第二个复选框也没有回发。

【问题讨论】:

    标签: asp.net checkbox postback


    【解决方案1】:

    我发现 ASP.NET 没有为复选框定义“onclick”属性,但会将提供的任何 onclick 代码传递给生成的 HTML。但是,它也利用 onclick 属性来实现回发。我提供的 onclick 代码被添加到使回发发生的代码之前。而且因为我使用了 return 语句,所以它没有被执行。对不起,如果这很明显 - 这不是我的。

    所以解决方法是只在我不想要回发时执行返回

        <asp:CheckBox ID="chkRegister" runat="server" AutoPostBack="true" onclick =" var bOK = document.getElementById('chkTC').checked; if (!bOK) { alert('You must agree to the Terms and Conditions'); return false; }" />
    

    【讨论】:

    • 它确实有一个OnCheckedChanged
    • 那不是服务器端的吗?
    • 是的。如果你想要客户端使用OnClientClick。我以为当文本框更改时你想要一个 PostBack。
    • 我希望回发是有条件的——我想在 JS 中进行检查,这可能意味着我不回发。我可以通过从 OnClientClick 返回 false 来做到这一点吗?
    猜你喜欢
    • 1970-01-01
    • 2016-05-29
    • 2011-12-11
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    相关资源
    最近更新 更多