把各textbox的onblur事件贴出来。

解决方案 »

  1.   

    加个标识就可以解决这个问题了。
    像下面这样改一下试试。
    var f = false;
    function CheckData()
    {
        if(f) return;
        f = true;
        if (this.id=="TextBox2")
          {
              if ((document.getElementById("TextBox1").value=="0") && (this.value.trim()!="0"))
              {
                    alert("数据关联校验错误!");
                    this.select();
                    this.focus();
    //                return;
              }     
          }
        else if (this.id=="TextBox3")
          {
              if ((document.getElementById("TextBox1").value=="0") && (this.value.trim()!="0"))
              {
                    alert("数据关联校验错误!");
                    this.select();
                    this.focus();
    //                return;
              }     
          }
         f=false;
    } 不过感觉楼主的检查逻辑不是很合理。
    比如当 textbox1输入0的时候把 textbox2, textbox3的设置为只读是不是更好些。
      

  2.   

    function CheckData() 
    {   if (this.id=="TextBox1"&&this.value.trim()=="0") {
          document.getElementById("TextBox2").value="0";
      document.getElementById("TextBox2").readOnly=true;
          document.getElementById("TextBox3").value="0";
          document.getElementById("TextBox3").readOnly=true;
      }} 
    这样2,3都不给他输入不就可以了
      

  3.   

    3楼的方法可以解决问题,不过我还有一个一问就是你的onblur函数是在哪里写着呢?如果写到INPUT属性里面的话,this关键字所指的应该是window对象,而不是element吧?
      

  4.   

    第一个问题,不要像3楼那么复杂(没有测试):function CheckData() 

        if (this.id=="TextBox2") 
          { 
              if ((document.getElementById("TextBox1").value=="0") && (this.value.trim()!="0")) 
              { 
                    alert("数据关联校验错误!"); 
                    this.select(); 
                    this.focus(); 
                    return false; 
              }      
          } 
        else if (this.id=="TextBox3") 
          { 
              if ((document.getElementById("TextBox1").value=="0") && (this.value.trim()!="0")) 
              { 
                    alert("数据关联校验错误!"); 
                    this.select(); 
                    this.focus(); 
                    return false; 
              }      
          } 
    } 最后一个问题,直接写在input里面,this指向当前那个input,typeof是object
    举例:<input type="text" value="测试" onblur="alert(this.value);">
      

  5.   

    return false; 
    出错了,本来是加红的,结果直接把代码写出来了,lz理解一下测试一下吧,
      

  6.   

    楼上的代码似乎不行吧?这个关键和触发onblur()事件有关
    对于this关键字,如果写在input属性里面,那指的就是element,但是如果是把函数CheckData()写在里面,而用一下这种方式引用,那就不是element了
    onblur = 'CheckData()'
      

  7.   

    做了个sample,给你参考一下。
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        </head>
        <script language="JavaScript">
            var f = false;
            function $(id){
                return document.getElementById(id);
            }
            
            var ct = 0;
            function CheckData(obj){
                if (f) 
                    return;
                f = true;
                if (obj.id == "TextBox2" || obj.id == "TextBox3") {
                    if (($("TextBox1").value == "0") && (obj.value.replace(/^\s+|\s+$/g, '') != "0")) {
                        obj.select();
                        alert("数据关联校验错误!");
                        f = false;
                    }
                }
            }
        </script>
        <body>
            <input type="text" id="TextBox1" value="0">
            <br>
            <input type="text" id="TextBox2" onblur="CheckData(this);">
            <br>
            <input type="text" id="TextBox3" onblur="CheckData(this);">
            <br>
        </body>
    </html>
      

  8.   

    前面的代码有点错误。
    再发一次。
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        </head>
        <script language="JavaScript">
            var f = false;
            function $(id){
                return document.getElementById(id);
            }
            
            function CheckData(obj){
                if (f) 
                    return;
                f = true;
                if (obj.id == "TextBox2" || obj.id == "TextBox3") {
                    if (($("TextBox1").value == "0") && (obj.value.replace(/^\s+|\s+$/g, '') != "0")) {
                        obj.select();
                        alert("数据关联校验错误!");
                    }
                }
                f = false;
            }
        </script>
        <body>
            <input type="text" id="TextBox1" value="0">
            <br>
            <input type="text" id="TextBox2" onblur="CheckData(this);">
            <br>
            <input type="text" id="TextBox3" onblur="CheckData(this);">
            <br>
            <input type="text" id="TextBox4">
            <br>
        </body>
    </html>
      

  9.   

    上面var f = false可以实现,不过事件为onblur不成功,事件为onfocusout倒可以。anjing5566的return false不成功。我记得以前用delphi,在delphi中事件有参数,可以设置参数的值,来阻止跳转。看来web下好像不行。
      

  10.   

    我在IE6上测试使用onblur是没问题的.
    用onfocusout也可以.
    不过只有IE6以上的版本才支持.