在 Internet Explorer 中使表单元素 onchange 冒泡

2024-04-06

如何使各种表单元素的 onChange 事件向上冒泡到 Internet Explorer 中的父表单对象?当选择框、单选按钮...几乎任何内容...在 IE 中发生更改时,不会触发父窗体的 onChange。我的表单是动态变化的,因此很难通过监听每个子表单元素来破解它。

HTML

<form id="myForm">
 <select>
  <option>uno</option>
  <option>dos</option>
 </select>
 <input type="radio" name="videoDevice" value="tres" checked="checked" />
 <input type="radio" name="videoDevice" value="cuatro" />
</form>

JS

$('myForm').observe(
 'change', 
 function() {
  // this only runs in non-IE browsers
  alert('the form changed');
 }
);

顺便说一句,我正在使用原型框架。它不应该为我处理跨浏览器的差异吗?


我不得不对 IE 使用 hack。我手动让所有子表单元素触发 onChange 回调,而不是让父表单执行此操作。我希望有一个更清洁的解决方案。

$('myForm').select('input', 'radio', 'textarea').each(
 function(formElement) {
  formElement.observe(
   'change', 
   function() {
    alert('changed');
   }
  );
 }
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Internet Explorer 中使表单元素 onchange 冒泡 的相关文章

随机推荐