0

为什么我不能在ie中使用onChange?有没有解决方案?

HTML:

<select id="auto_doors" style="display:none;" name="auto_doors" onchange="updateField(this.value, 'auto_fuel', 5, 6, this.parentNode.id), resetBelow(4,'auto'), show('auto_fuel')">
</select>

功能:

if (jQuery.browser.msie) { setTimeout(DoSomething, 0); } else { DoSomething(); }
        function updateField(str, id, prevvalue, value, vehicletype)
        {
        if (str=="")
          {
          document.getElementById(id).innerHTML="";
          return;
          } 
        if (window.XMLHttpRequest)
          {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
          }
        else
          {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            document.getElementById(id).innerHTML=xmlhttp.responseText;
            }
          }
        xmlhttp.open("GET","inc/form_rest.php?q="+str+"&prevvalue="+prevvalue+"&value="+value+"&vehicletype="+vehicletype,true);
        xmlhttp.send();
        }
4

3 回答 3

1

尝试将 on on change 事件绑定到 auto_doors 元素,如下所示:

$("#auto_doors").change(function(){
   updateField(this.value, 'auto_fuel', 5, 6, this.parentNode.id), resetBelow(4,'auto'), show('auto_fuel');
});
于 2013-02-03T20:35:03.370 回答
1

您可以使用 jQuery 来解决此问题,代码如下所示:

$('#auto_doors').change(function() {
  alert('Handler for .change() called.');
});
于 2013-02-03T20:37:14.740 回答
0

可能有帮助的三个观察结果:

  1. 不再需要支持 IE6 及以下版本。new XMLHttpRequest()足够了。
  2. 你应该onreadystatechange 调用后设置.open()。在某些浏览器(可能只是 IE)中,调用.open()算作“新请求”并清除 readystatechange 处理程序。
  3. 旧版本的 IE(IE7?)不喜欢this.value<select>. 相反,您应该使用this.options[this.selectedIndex].value.
于 2013-02-03T20:31:58.157 回答