VS的OnClick对的OnClientClick一个asp:复选框? [英] OnClick vs OnClientClick for an asp:CheckBox?

查看:115
本文介绍了VS的OnClick对的OnClientClick一个asp:复选框?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有人知道为什么一个客户端JavaScript处理程序的asp:复选框需要有一个onclick =属性,而不是一个的OnClientClick =属性,为ASP:按钮

Does anyone know why a client-side javascript handler for asp:CheckBox needs to be an OnClick="" attribute rather than an OnClientClick="" attribute, as for asp:Button?

例如,这个作品:

<asp:CheckBox runat="server" OnClick="alert(this.checked);" />

和这个没有(没有错误):

and this doesn't (no error):

<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />

但这个作品:

<asp:Button runat="server" OnClientClick="alert('Hi');" />

和这不(编译时错误):

and this doesn't (compile time error):

<asp:Button runat="server" OnClick="alert('hi');" />

(我知道Button.OnClick是什么,我不知道为什么复选框不相同的方式工作...)

(I know what Button.OnClick is for; I'm wondering why CheckBox doesn't work the same way...)

推荐答案

这是非常奇怪的。我查了复选框文档页面其内容

That is very weird. I checked the CheckBox documentation page which reads

<asp:CheckBox id="CheckBox1" 
     AutoPostBack="True|False"
     Text="Label"
     TextAlign="Right|Left"
     Checked="True|False"
     OnCheckedChanged="OnCheckedChangedMethod"
     runat="server"/>

如你所见,没有任何的OnClick或属性的OnClientClick定义。

As you can see, there is no OnClick or OnClientClick attributes defined.

牢记这一点,我觉得这是发生了什么。

Keeping this in mind, I think this is what is happening.

当你这样做,

<asp:CheckBox runat="server" OnClick="alert(this.checked);" />

ASP.NET不修改onclick属性并使得它作为是在浏览器上。这将呈现为:

ASP.NET doesn't modify the OnClick attribute and renders it as is on the browser. It would be rendered as:

  <input type="checkbox" OnClick="alert(this.checked);" />

显然,浏览器可以理解的onClick,并提出警告。

Obviously, a browser can understand 'OnClick' and puts an alert.

而在这种情况下

<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />

再次ASP.NET不会改变的OnClientClick属性,将呈现为

Again, ASP.NET won't change the OnClientClick attribute and will render it as

<input type="checkbox" OnClientClick="alert(this.checked);" />

由于浏览器将无法理解的OnClientClick什么都不会发生。它,因为它只不过是另一种属性,也不会引发任何错误。

As browser won't understand OnClientClick nothing will happen. It also won't raise any error as it is just another attribute.

您可以通过查看HTML呈现上述确认。

You can confirm above by looking at the rendered HTML.

是的,这是不直观的。

And yes, this is not intuitive at all.

这篇关于VS的OnClick对的OnClientClick一个asp:复选框?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆