0

window.onchange イベントを使用して、クロムと FF で正常に動作する選択ドロップダウンの組み合わせに従って、さまざまなメッセージを表示/非表示にする関数を作成しました。これがieで機能しない理由と、解決策があれば教えてください。

内部制限により、テーブルに組み込む必要がありました。

    ;(function(){
    document.onchange = function(){
        // Initialise variables for drop down options
        var homeMove        = document.getElementById('homeMove'),
            transferOrder   = document.getElementById('transferOrder'),
            orderComplete   = document.getElementById('orderComplete'),
            submitBtn       = document.getElementById('submitBtn');

        // Initialise variables for comments
        var comment1 = document.getElementById('comment1'),
            comment2 = document.getElementById('comment2'),
            comment3 = document.getElementById('comment3');


        if((homeMove.value == 'No') && (transferOrder.value == 'No')){
            comment2.style.display = 'none';
            comment3.style.display = 'none';
            comment1.style.display = 'block';
            submitBtn.disabled = true;
        }   

        // if Home Move - No AND Transfer Order - Yes. Display nothing. Submit button abled
        if((homeMove.value == 'No') && (transferOrder.value == 'Yes')){
            comment1.style.display = 'none';
            comment2.style.display = 'none';
            comment3.style.display = 'none';
            submitBtn.disabled = false;
        }

        // If Home Move - Yes AND Transfer Order - NO. Display comment1. Submit button disables
        if((homeMove.value == 'Yes') && (transferOrder.value == 'No')){
            comment1.style.display = 'block';
            comment2.style.display = 'none';
            comment3.style.display = 'none';
            submitBtn.disabled = true;
        }

        // If Home Move - Yes AND Transfer Order - Yes AND Order Complete - Yes. Display comment2 Subhmit button abled
        if((homeMove.value == 'Yes') && (transferOrder.value == 'Yes') && (orderComplete.value == 'Yes')){
            comment1.style.display = 'none';
            comment2.style.display = 'block';
            comment3.style.display = 'none';
            submitBtn.disabled = false;
        }   

        // If Home Move - Yes AND Transfer Order - Yes and Order Complete - No. Display comment3. Submit button disabled
        if((homeMove.value == 'Yes') && (transferOrder.value == 'Yes') && (orderComplete.value == 'No')){
            comment1.style.display = 'none';
            comment2.style.display = 'none';
            comment3.style.display = 'block';
            submitBtn.disabled = true;
        }
    }
})();

これに関するどんな助けも素晴らしいでしょう。ありがとう

4

2 に答える 2

0

まず、document.change を実行する代わりに、ドロップダウンの変更にイベントを追加するとよいでしょう。

onpropertychange は、より確実なショット イベントである場合があります。ただし、そのイベントについては、次のフィルターを追加して、イベントが値の変更に関するものであることを確認してください。

yourselectboxelement.onpropertychange = function() { 
  if (window.event.propertyName == "value") {   
   // Do stuff here     
  } 
}; 
于 2012-07-04T12:40:29.357 に答える
0

IE は、要素がフォーカスを失ったときにのみ onchange イベントを発生させます

onclick イベントを使用してみてください。

于 2012-07-04T12:38:09.493 に答える