"onclick()"和"onClientClick()"之间的区别是什么?"

6
如果我同时使用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函数传递变量,这样当验证返回true时将调用save_n_display函数。

2个回答

6
无论您如何注册客户端点击事件,都不重要。但是,如果您使用服务器控件,则确实需要使用onclientclick。但关键是您要使用return Validate()。然后在验证方法中,根据它是否经过验证,返回true或false值。请注意保留HTML标记。
编辑:因此,请将onclientclick设置为以下内容:
onclientclick="return Validate();"

然后在验证函数中:

function Validate()
{
    return true;
}

如果验证返回false,那么onClick就不会被调用了吗? - Sangram Nandkhile
@Sangram,没错,如果Validate()返回false,点击事件将被取消。 - Jiaaro

0

我必须去找例子...但我刚刚完成了点击事件。在代码后台,我运行了我的服务器端代码...或者我会在页面上注册一个脚本来调用JS验证,然后运行代码后台。

了解RegisterStartupScript

OnClick="MyCodeBehindMethod()"

然后,在代码后台:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接