onclick()和onClientClick()之间的区别?

时间:2010-07-27 17:23:04

标签: javascript asp.net

如果我同时使用onclick()onClientClick(),我可以确保只有在客户端函数返回TRUE后才会调用服务器端,反之亦然吗?

例如:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Import Namespace="System.Xml" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <%
 protected void save_n_display(object sender, EventArgs e)
 {
    // This must be called when validate() returns true...
 }
 %>

<asp:Button ID="Button1"  OnClientClick="validate()" onClick="save_n _display" "Text="Check" runat="server" />


<script type="text/javascript" language="javascript">
    function validate()    // client side Validation is done
    {

    }
</script>

我可以使用onclick()onClientClick(),还是需要不同的东西呢? 我甚至尝试将变量从javascript传递给asp函数,所以当validate返回true时,将调用save_n _display。

2 个答案:

答案 0 :(得分:5)

但是,您注册了客户端点击事件并不重要。虽然如果您使用的是服务器控件,那么您确实希望使用onclientclick。但关键是你要使用return Validate()。然后在验证方法中,根据是否验证,返回true或false值。

编辑:所以让onclientclick看起来像这样:

onclientclick="return Validate();"

然后在验证函数中:

function Validate()
{
    return true;
}

答案 1 :(得分:0)

我必须去寻找示例...但我刚刚进行了点击事件。在代码隐藏中,我运行了我的ServerSide代码......或者我会在页面上注册一个脚本来调用JS验证,然后运行代码隐藏代码。

Learn about RegisterStartupScript

OnClick="MyCodeBehindMethod()"

然后,在代码隐藏中有:

    //Verify and validate conditions
    string script1="<script language=JavaScript>"
    script1 += "Validate();"
    script1 += "</script>"
    Page.RegisterStartupScript("clientscript",script1);