javascript - 用户单击复选框时如何显示确认消息
问题描述
我在单击复选框时尝试显示确认消息时遇到问题。确认框出现但不执行任何类型的操作,例如当用户确认确定时在文本框中显示文本。任何建议都可以。提前致谢!
这是代码。
<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";
}
解决方案
好吧,复选框不像按钮。复选框没有 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 代码“如果我们想要 ok 继续,但如果我们不确认,那么我们必须做一个 return false 并退出 js 代码存根,否则无论返回 true 还是返回实际上都会运行。假。如果事实即使我们返回真,那么存根退出并且下面的回发代码永远不会运行。所以返回任何一个值仍然会退出生成的代码存根。
因此复选框不支持大多数按钮的标准,因为您使用 js 返回 true 或 false,因此不会发生回发。
我们不能像按钮一样使用 say return confirm('Please hit ok'),因为如果我们“返回”一个值,那么后面的回发代码永远不会运行。
因此,对于一个按钮,OnClientClick() 返回值 (true/false) 会为您测试,并确定按钮回发是否会触发。复选框不是这样,并且没有定义或支持 OnClientClick。但正如您在上面看到的,我们可以欺骗页面处理器工作 - 因为它只是将它自己的回发代码附加到我们填充到 OnClick 中的内容中。
但是,复选框不同,它并不真正支持 OnClientClick。但是如果你将代码推入 OnClick() 中,那么你可以看到最终渲染的输出。因此,如果我们确认,我们让 continue 继续运行回发,但如果您不确认并且后面的回发代码根本不运行,则退出(返回 false)。
推荐阅读
- python - Python “for” problem - Can only tuple-index with a MultiIndex
- svg - 使用 svg 圆和文本在饼图中围绕中心对齐文本
- python - 使用 pywinauto 确认 PuTTY 主机密钥提示
- excel - Excel VBA - 大数的奇怪问题
- testing - 测试中未保存的 Grails 域类
- javascript - 用 js 地图检查的复选框
- powershell - PowerShell 类中的重载运算符 %
- python - Pymodbus 使用串行客户端注册自定义格式
- javascript - 有没有办法通过单击按钮来捕捉 onchange 触发器?
- tfs - 拉取请求状态 - 向状态添加的自定义属性不会被 TFS 持久化