本帖最后由 lnw 于 2011-08-16 17:42:22 编辑

解决方案 »

  1.   

    function onloadCheck() {
            var target = document.forms[0];
            
            for(var i=0; i<target.elements.length; i++) {
                var e = target.elements[i];
                if(e.type == "text" || e.type == "password" || e.type == "file" || e.type == "textarea") {
                    onblurMethod[e.name] = e.getAttribute("onblur");
                    e.onblur="";
                    //如果check通过 增加onblur事件
                    if(check() == true){
                      e.attachEvent("onblur",onblurMethod[e.name])
                    }else{
                       //check 不过的处理
                          alert('check不通过');
                    }
                }
            }
        }
      

  2.   

    好吧需求是这样的,在不修改原画面的基础上,只在原画面的的body onload事件中添加方法,来实现对画面中所有text,textarea,password,file等控件的输入内容做check,check通过的情况下执行这些控件原来的onblur事件,否则做其他相应动作。onblur事件原来调用的方法不同控件可能也不尽相同。
      

  3.   

    1楼的朋友,你的方法只能控制在onload时是否添加
    e.attachEvent("onblur",onblurMethod[e.name])
    在onblur事件发生时,实际上是没有做check的。
      

  4.   

    试试e.attachEvent("onblur", function(fnHandler) {
      return function() {
        if(check() == true) {
          fnHandler.call();
        }
      }
    }(onblurMethod[e.name])
    );
      

  5.   

    按楼上的方法修改以后 function onloadCheck() {
    var target = document.forms[0];

    for(var i=0; i<target.elements.length; i++) {
    var e = target.elements[i];
    if(e.type == "text" || e.type == "password" || e.type == "file" || e.type == "textarea") {

    //var onblurMethod = e.getAttribute("onblur");

    onblurMethod[e.name] = e.getAttribute("onblur");

    e.onblur="";

    e.attachEvent("onblur", function(fnHandler) {
      return function() {
        if(check() == true) {
          fnHandler.call();
        }
      }
    }(onblurMethod[e.name])
    );
    }
    }会报fnHandle为空的错
      

  6.   

    页面加载
    check通过再添加 onblur!
      

  7.   

    解决了,用了个很bt的方法,代码如下:<html>
    <head>
    </head>
    <SCRIPT LANGUAGE='JavaScript'> //var onblurMethod = new Array();

      function format() {
          alert("format");
      }
      
      function count() {
       alert("count");
      }
      
      function check() {
       alert("check");
       return true;
      }
      
    </SCRIPT>
    <SCRIPT LANGUAGE='JavaScript'>
    function onloadCheck() {
    var target = document.forms[0];

    for(var i=0; i<target.elements.length; i++) {
    var e = target.elements[i];

    if(e.type == "text" || e.type == "password" || e.type == "file" || e.type == "textarea") {


    var itemId = target.elements[i].id;

    if(itemId == null || itemId == "") {
    itemId = target.elements[i].name;
    }

    var onblurMethod = e.getAttribute("onblur").toString();
    var start = onblurMethod.indexOf("{") + 1;
    var end = onblurMethod.indexOf("}");
    var fnStr = onblurMethod.substring(start, end);

    fnStr = "document.getElementById('" + itemId + "').onblur= function(){if(check()) " + fnStr + "}"; eval(fnStr);

    }
    }
    }
    </SCRIPT>
    <body onload="onloadCheck()">
    <form name="test">
    name:<input type="text" name="name" value="" onblur="format();" /><br>
    age :<input type="text" name="age" value="" onblur="count();"/><br>
    <input type="button" name="btnOk" value="OK"/>
    </form>
    </body>
    </html>