<script language="javascript" type="text/javascript">
   function ButtonTest()
   {
  //接受 txtName的值
     var i  = document.form1.txtName.value;
 //不像服务器提交
     if(i=="")
     {
     alert("不能为空");
     return false;
     }
   //以下向服务器提交
     else
     {
     alert("不是空");
  
     return true;
     }
   }   
</script>
    <form id="form1" runat="server" name="form1" >
        <input type="text" ID="TextBox1" runat="server"  name="txtName" value="" ><br />
        <asp:Button ID="Button1" runat="server" Text="Button"  OnClientClick="return ButtonTest();"  OnClick="Button1_Click"/>
    </form>如果js的方法里只有一个alert();和return false; 可以阻止向服务器提交,可是为什么有了其他的却不能阻止向服务器提交数据呢?

解决方案 »

  1.   

    程序里面的return true或者false只是代表执行这个js函数的返回值是true还是false!
    重要的是return ButtonTest();这里,假如你返回的是true就会产生回传,如果函数返回false就不会
      

  2.   

    生成的HTML源文件如下
            <input name="TextBox1" type="text" id="TextBox1" /><br />
            <input type="submit" name="Button1" value="Button" onclick="return ButtonTest();" id="Button1" />
      

  3.   

    如果是runat=server的话,指定的name会无效的.
    var i  = document.form1.TextBox1.value;
      

  4.   

    var TextBox1=document.getElementById('TextBox1');
    if(TextBox1.value=="")
            {
                alert('不能为空!');
                TextBox1.focus();
                return false;
            }
    return true;你这样写看看
      

  5.   

    记住,调试js时就应该查看它的源文件.
    -----
    如果你开启了ie选项中的调试js的选项,就可以在vs当中调试js了!
      

  6.   

    String.prototype.trim = function()
        {
            return this.replace(/(^\s*)|(\s*$)/g, "");
        }var i  = document.all.txtName.value.trim();try try...
      

  7.   

    记住,调试js时就应该查看它的源文件.
    -----
    如果你开启了ie选项中的调试js的选项,就可以在vs当中调试js了!
    --------------
    我说的调试是查看错误,呵呵.不是debug.
    因为LZ估计是看aspx文件,找不出问题,查看源文件一看就知道了.
      

  8.   

    写在<form ......  submit="return ButtonTest">就可以了!