1

このコードをページに追加する前に、実行時にすべての選択ボックスでユーザーが 2 回クリックしてドロップダウン メニューを開くことに気付いた場合、最初のクリックでフォーカスが設定されたように見え、次に 2 回目のクリックでドロップダウン メニューが開きます。ついに開く。コードを削除すると、動作が変わり、ユーザーは 1 回のクリックですべてのメニュー オプションを含むドロップダウンを開くことができます。

何を修正または変更すればよいかわからないため、2回のクリックが必要ありません.ieも使用しています。7 したがって、これは css focus の回避策になります。jqueryを使いたくありません。

ご助力いただきありがとうございます。

function v9_form() {
//===========================================================================================>>
    var x = document.getElementsByTagName('INPUT');
    for (var i = 0; i < x.length; i++) {
            if (x[i].type == "text" && x[i].readOnly == false) {            
        if (x[i].id != "date2" && x[i].id != "date3") {

            x[i].onfocus = function() { this.style.backgroundColor = '#FFFFC4';};

            x[i].onblur = function() {  this.style.backgroundColor = '#FFFFFF';};
        }   


            }//end of if
    }//end of for

    var y = document.getElementsByTagName('SELECT');
    for (var i = 0; i < y.length; i++) {
            y[i].onfocus = function() { this.style.backgroundColor = '#FFFFC4'; };
            y[i].onblur = function() { this.style.backgroundColor = '#FFFFFF'; };
    }

    var z = document.getElementsByTagName('TEXTAREA');
    for (var i = 0; i < z.length; i++) {
            z[i].onfocus = function() { this.style.backgroundColor = '#FFFFC4'; };
            z[i].onblur = function() { this.style.backgroundColor = '#FFFFFF'; };
    }

}
4

2 に答える 2

0

これは IE の既知の問題です。IEでいずれかのスタイルを変更するとonfocus、ドロップダウンの選択肢が表示されません。

onfocusin解決策は、IEのイベントを使用することです。

y[i].onfocusin = function() { this.style.backgroundColor = '#FFFFC4'; }

MSDNから:

その要素にフォーカスを設定する直前に要素に対して発生します。

もう 1 つのオプションは、:focusCSS セレクターを使用することですが、複雑な Javascript ロジックを使用しない CSS に限定されることは明らかです。

于 2012-11-21T19:37:53.740 に答える
0

あなたはこのバグの被害者です。

これは IE の特殊な動作のようです。その答えには、試すことができる可能な回避策を提供するコードがいくつかありますが、それが行うことはかなり重いです(古いバージョンのIEを使用している人に対応します)。最善の選択肢は、CSS 疑似クラスを使用するか (上記の回答で推奨されているように)、または IE<8 を使用しているユーザーの機能を削除することだと思います。

于 2012-11-21T19:38:03.670 に答える