日期:2014-05-18  浏览次数:20434 次

帮我看一下这段关于用JS判断text是否为空的代码
<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;   可以阻止向服务器提交,

可是为什么有了其他的却不能阻止向服务器提交数据呢?


------解决方案--------------------
程序里面的return true或者false只是代表执行这个js函数的返回值是true还是false!
重要的是return ButtonTest();这里,假如你返回的是true就会产生回传,如果函数返回false就不会
------解决方案--------------------
生成的HTML源文件如下
<input name= "TextBox1 " type= "text " id= "TextBox1 " /> <br />
<input type= "submit " name= "Button1 " value= "Button " onclick= "return ButtonTest(); " id= "Button1 " />
------解决方案--------------------
如果是runat=server的话,指定的name会无效的.
var i = document.form1.TextBox1.value;
------解决方案--------------------
var TextBox1=document.getElementById( 'TextBox1 ');
if(TextBox1.value== " ")
{
alert( '不能为空! ');
TextBox1.focus();
return false;
}
return true;

你这样写看看
------解决方案--------------------
name会变为它的id,
------解决方案--------------------
那是因为你的JS中有错啊
------解决方案--------------------
记住,调试js时就应该查看它的源文件.
------解决方案--------------------
我以前也碰到过,我就一行的测直到发现错误的那行,改了就行了
------解决方案--------------------
记住,调试js时就应该查看它的源文件.
-----
如果你开启了ie选项中的调试js的选项,就可以在vs当中调试js了!
------解决方案--------------------