12

DIV 内のフォーム要素のすべての変更に対して Onchange イベントを発生させたい

これがスニペットです

<html>
<body>

<div id="container">
    <input type="checkbox"/>
    <input type="checkbox"/>
    <input type="text"/>
    <input type="text"/>
</div>

<script>
di = document.getElementById("container");
di.onchange = function(a){
alert("On Change Called");
}

di.onclick = function(a){
 alert("On Click Called");
}

</script>

</body>
</html>

このイベントは、フォーム要素のいずれかからフォームの新しい要素にフォーカスが移動したとき、コンテンツが更新されたとき (例: 入力ボックスが更新されたとき) に発生します。

上記のコードはすべてのブラウザで正常に機能しますが、IE では機能しません。これを行う方法はすべて IE です。

4

7 に答える 7

12

実際、IE、特に IE7/8 はonchangeイベントをあまりサポートしていません。onclickイベントを使用することをお勧めします。

于 2012-10-19T03:36:56.413 に答える
5

onchangeMSDN によると、イベントは IE でバブルしません。

于 2012-06-04T04:08:02.247 に答える
1

ほとんどすべての Web 開発者は、この問題に直面したに違いありません。古いバージョンの IE では、onChangeイベントが発生せず、代わりにonClick動作することがあります。

しかし、これは最新の IE 11 では想定されていません。私の場合、onChangeイベントで呼び出された関数名がどこかで衝突していました。コンテキスト全体で一意のように聞こえる別の名前に変更したところ、機能しました。

結論: IE 11 は、システム内でターゲット関数 (私が推測するファイル名でさえも) と一致するいくつかの類似した名前を見つけると混乱しonchangeますが、他のブラウザーは十分にインテリジェントです。

于 2017-01-17T02:57:00.157 に答える