9

JavaScript を使用してチェック ボックスにクリック イベントを添付しようとしています。以下に HTML と JS を示します。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <input type="hidden" name="caution_c" value="0">
        <input type="checkbox" id="caution_c" name="caution_c" value="1" tabindex="120">
        <script type="text/javascript">
            var cb = document.getElementById('caution_c');
            cb.onclick = function() {
                alert(1);
            }
        </script>
    </body>
</html>

問題は、IE でクリック イベントが発生しないことです。問題箇所を絞り込みました。問題は、チェック ボックスの直前に非表示の入力があり、これらの要素が両方とも同じ名前であることです。なぜこれが問題を引き起こしているのかわかりません (結局のところ、getElementById を使用していて、非表示の要素には ID さえありません)。

このタイプの動作には正当な理由がありますか (IE のみ。Firefox では正常に動作します... いつものように :( )? また、適切な回避策はありますか ( document.getElementsByName('caution_c')[1]でもしたくない…)

4

3 に答える 3

13

Internet Explorer は混乱しnameidこれら 2 つの属性を同じものとして扱うことを強くお勧めします。

1) ドキュメントに id/name の競合がないことを確認するか、2) IE のネイティブ getElementById-method をオーバーライドすることで修正できます。

詳しくはこちらをご覧ください

于 2010-09-14T11:28:05.300 に答える
1

onchangeまたはなどの別のイベントを使用して、onfocusそれが解決するかどうかを確認してください。onclickまた、ユーザーがチェックボックスをタブで押しても解雇されるとは思いません。これは、意図したとおりに機能する場合とそうでない場合があります。

于 2010-09-14T11:34:43.930 に答える