当用户单击复选框时如何显示确认消息

时间:2021-03-10 00:30:16

标签: javascript c# asp.net checkbox

我在尝试在单击复选框时显示确认消息时遇到问题。确认框出现但不执行任何类型的操作,例如当用户确认 OK 时在文本框中显示文本。任何建议都可以。提前致谢!

这是代码。

<div>
    <asp:CheckBox ID="CheckBox1" runat="server" 
                  OnCheckedChanged="CheckBox1_CheckedChanged" 
                  OnClick="if(!confirm('Are you sure you?'))return false;" />
    <br />
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</div>

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
    TextBox1.Text = "blah";
}

1 个答案:

答案 0 :(得分:0)

嗯,复选框不像按钮。复选框没有 OnClientClick。

但是,您可以使用 OnClick。

此外,除非您设置 AutoPostback = true,否则您拥有的代码存根(代码隐藏)不会像按钮单击一样运行。

但是,您可以这样做:

<asp:CheckBox ID="CheckBox1" runat="server"  
    OnClick="if (!confirm('really do this')) {return false;}" 
AutoPostBack="True"/>

您必须使用 !not 并退出 JavaScript 例程,否则您必须让 JS 代码继续运行,因为它会为您回传。于是,上面被asp.net吐出来的代码变成了这样:

<input id="CheckBox1" type="checkbox" name="CheckBox1" 
  checked="checked" 
  onclick="if (!confirm('really do this')) {return false;};
  setTimeout('__doPostBack(\'CheckBox1\',\'\')', 0)">

所以,我们必须让 js 代码“继续,如果我们想要,但如果我们不确认,那么我们必须返回 false 并退出 js 代码存根,否则回帖实际上会运行,而不管返回 true 或 false。如果 fact 即使我们返回 true,那么存根也会退出,并且后面的回发代码永远不会运行。因此,带有任一值的返回仍然会脱离生成的代码存根。

因此该复选框不支持大多数按钮的标准,因为您使用 js 返回 true 或 false,因此不会发生回发。

我们不能像按钮一样使用 say return confirm('Please hit ok') ,因为如果我们“返回”一个值,那么后面的回传代码永远不会运行。

因此,对于按钮,会为您测试 OnClientClick() 返回值 (true/false),这将确定按钮回发是否会触发。复选框不是这样,并且没有定义或支持 OnClientClick。但是正如您在上面看到的,我们可以欺骗页面处理器使其工作 - 因为它只是将自己的回发代码附加到我们填充到 OnClick 中的内容中。

但是,复选框不同,它并不真正支持 OnClientClick。但是,如果您将代码推送到 OnClick() 中,那么您就可以看到最终呈现的输出。因此,如果我们确认,我们让 continue 继续运行回发,但如果您不确认,则退出(返回 false)并且后面的回发代码根本不会运行。