JS

今天没事整整js的一个问题,欢迎大家来发言
问题如下:
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <input type="text"  id="textbox2" runat="server"/>
    <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button"  OnClientClick="xxx"/>
 <script language="javascript" type="text/javascript">
        function xxx() {
            $('#<%=TextBox1.ClientID %>', document).val("赋值成功");
            $('#textbox2').val("我也赋值成功");
            $('#<%=this.Button2.ClientID %>').click();
            
        }
</script>后台cs代码
        protected void Button2_Click(object sender, EventArgs e)
        {
            this.Response.Write("<script>alert('点击成功')</script>");
        }
 OnClientClick="xxx" OnClientClick="xxx()"的执行结果咋不一样呢,
前者执行结果TextBox1和textbox2都没有赋值,但后台的csButton2_Click却执行了。前面可以理解为匿名函数应该也是执行才对,还有就是return xxx()他们之间的区别是什么呢,一般是一个返回值,好像都是同样执行一个过程区别不是太大。请高手详解

解决方案 »

  1.   

    xxx()是执行function xxx()
    xxx相当于function xxx()的变量,而不是执行xxx()
      

  2.   

    OnClientClick="xxx();return false;"
      

  3.   

    没错,调用函数应该用xxx(),xxx不行
      

  4.   

    OnClientClick="xxx" 是不会执行的OnClientClick="xxx()" 相当于 
    oncick = new Function("xxx()")();
    相当于(function (){xxx();})();return xxx();
    返回 xxx 函数的返回值。返回false 不提交表单
    默认是返回true!
    也就是说,你 不加 return ,表单是会提交的
      

  5.   

    xxx里执行后台的click是成功的
      

  6.   

    那为什么    $('#<%=this.Button2.ClientID %>').click();没起作用呢,   这个click执行的是什么