Javascript onblur函数擦除以前写入其中的函数

Javascript onblur函数擦除以前写入其中的函数,javascript,css,Javascript,Css,有谁能帮我摆脱长期以来在这个问题上的困扰吗。 我想要实现的是在ie8中的onblur事件中更改文本框的颜色。 下面的代码工作得很好,但是在重写onblur事件之前,我一直在检索onblur事件的值。这意味着我希望在onblur上调用这些警报,但它们似乎已消失/被覆盖。尝试了各种替换,但都失败了。 我使用了以下代码: <html> <head> <meta http-equiv="Content-Type" content="text/html; cha

有谁能帮我摆脱长期以来在这个问题上的困扰吗。 我想要实现的是在ie8中的onblur事件中更改文本框的颜色。 下面的代码工作得很好,但是在重写onblur事件之前,我一直在检索onblur事件的值。这意味着我希望在onblur上调用这些警报,但它们似乎已消失/被覆盖。尝试了各种替换,但都失败了。 我使用了以下代码:

<html>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <title>Style changes on INPUT text boxes</title>
     <script type="text/javascript">

      // Object to activate focus and blur style changes for INPUT text boxes in 
      // Internet Explorer
      var InputFocus = {
        classNameFocus  : "focus",
        classNameBlur   : "",

        initialize : function() {
          // Test for Internet Explorer, and version that supports standard DOM calls
          if (window.ActiveXObject && document.selection && document.all && document.getElementById && document.getElementsByTagName) {
            //alert("It's internet explorer!");
            var inputs = document.getElementsByTagName("input");
            var i = 0;
            var end = inputs.length;

            for (i; i < end; i++) {
              inputs[i].onfocus = function() {
                InputFocus.doFocus(this);
              };
              var onblur_funcs = "" + inputs[i].onblur;
        //alert(onblur_funcs);
        onblur_funcs_val = onblur_funcs.substring(onblur_funcs.indexOf("{") + 1, onblur_funcs.indexOf("}"));
        inputs[i].onblur = function() {
            //this.onblur = function() {onblur_funcs_val};                  <------ tried this. didn't work :(
            InputFocus.doBlur(this);
            //this.onblur = function() {onblur_funcs_val};                  <------ tried this. alas didn't work :'(
                            //onblur_funcs_val    <-- this didn't work as well
        };

      }
    }
  },

  doBlur : function(el) {
    el.className = el.className.replace(this.classNameFocus, this.classNameBlur);
    //el.onblur = function() {onblur_funcs_val};                    <------ tried this. didn't work :(
    el = null;
    //el.onblur = function() {onblur_funcs_val};                    <------ tried this. this too didn't work :(
  },

  doFocus : function(el) {
    el.className += this.classNameFocus;
  }

};

window.onload = function() {
  InputFocus.initialize();
};

</script>


<style type="text/css" media="screen">
input{font-family:MS Sans Serif,Arial; font-size:9pt; color:red;}
/* For standards browsers */
input[type="text"]:focus {
  border: 1px solid #f00;
  background-color: #FFBFFF;
}

/* For Internet Explorer */
input.focus {
  border: 1px solid #f00;
  background-color: #FFBFFF;
}

</style>
</head>
<body>
<form action="" method="get">
  <input type="text" onblur="alert('Called onblur1');alert('called onblur2');" size="20"><br/>
  <input type="text" onblur="alert('Called onblur3');alert('called onblur4');" size="20"><br/>
  <input type="text" onblur="alert('Called onblur5');alert('called onblur6');" size="20">
</form>

</body>
</html>

输入文本框上的样式更改
//对象以激活中输入文本框的焦点和模糊样式更改
//Internet Explorer
变量InputFocus={
classNameFocus:“焦点”,
classNameBlur:“”,
初始化:函数(){
//测试Internet Explorer,以及支持标准DOM调用的版本
if(window.ActiveXObject&&document.selection&&document.all&&document.getElementById&&document.getElementsByTagName){
//警报(“是internet explorer!”);
var inputs=document.getElementsByTagName(“输入”);
var i=0;
var end=输入。长度;
对于(i;i//this.onblur=function(){onblur\u funcs\u val};
在覆盖onblur事件之前检索该事件的值
--我不确定这意味着什么。您的代码似乎完全按照您的要求执行,即使这是一种非常复杂的方法:当输入模糊时,它会更改输入背景。您还想要什么(为什么?)?这里有一个小问题:我希望那些写在输入框的onblur事件上的警报在我使用ie8时出现,但它们不会出现。好的。你为什么想要那些警报框?很抱歉,回复太晚。这些文本框上执行了一些验证操作。由于限制,我无法共享它们。这就是为什么向她发布警报框的原因所以你想在模糊上进行验证和颜色改变?