OnClientClick是客户端事件处理方法,一般采用JavaScript来进行处理,也就是直接在IE端运行,一点击就运行
OnClick是服务器端事件处理方法,在服务器端也就是IIS中运行,点击后,先执行postback,再运行
OnClientClick常用来做一些客户端的检测。当然也可以放在服务器端检测,但是需要与服务器进行交互,消耗资源,而且用户体验也不好。
当一个控件上同时有OnClick和OnClientClick时,OnClientClick先于OnClick执行
正确的写法应该是:
<
asp:Button
ID
="btnSave"
runat
="server"
Text
="Save"
OnClick
="btnSave_Click"
OnClientClick
="return saveFunc();"
/>
saveFunc对数据进行验证,当验证通过返回true时,执行服务器端方法进行保存,验证不通过返回false,服务器端的保存方法就不会执行。
错误的写法:
代码
<!--
无论验证是否通过,都会执行服务器端方法,不能达到验证的目的
-->
< asp:Button ID ="btnSave" runat ="server" Text ="Save" OnClick ="btnSave_Click" OnClientClick ="saveFunc();" />
<!-- 无论验证结果如何都返回false,服务器端方法永远不会执行 -->
< asp:Button ID ="btnSave" runat ="server" Text ="Save" OnClick ="btnSave_Click" OnClientClick ="saveFunc(); return false;" />
< asp:Button ID ="btnSave" runat ="server" Text ="Save" OnClick ="btnSave_Click" OnClientClick ="saveFunc();" />
<!-- 无论验证结果如何都返回false,服务器端方法永远不会执行 -->
< asp:Button ID ="btnSave" runat ="server" Text ="Save" OnClick ="btnSave_Click" OnClientClick ="saveFunc(); return false;" />