2009-08-21 6 views
1

状況でそれを変更した後の要素の表示の変化をレンダリングしない:IEのJavaScript

私は、チェックボックスと別のdivコンテナ内のdivコンテナを持っています。チェックボックスまたはチェックボックスのラベルをクリックすると、内部divの表示スタイルが変更されます。ディスプレイがブロックに設定されている場合は、noneに変更し、その逆に変更する必要があります。

コード:

HTML:

<input id="oper_sale" type="checkbox" name="oper_sale" onchange="show_hide_operation(this, 'sale_block');"> 
<label for="oper_sale" class="public">Venta:</label> 
    <div id="sale_block" name="sale_block" style="display: none;"> 
     AAAAAAA 
    </div> 

Javascriptを:

// Show or hide parts of a form 
function show_hide_operation (oper_choice, oper_block_id) { 
    var oper_block = document.getElementById(oper_block_id); 
    if (oper_choice.checked == true) 
     oper_block.style.display = "block"; 
    else 
     oper_block.style.display = "none"; 
} 

問題:

これはFirefoxで正常に動作しますが、IEにはそれがありません。チェックボックスまたはそのラベルをクリックすると、何も起こりません。しかし、チェックボックスまたはそのラベルをクリックした後で画面上の他の場所をクリックすると、問題は起こりません。私はそれがクリックされた後にチェックボックスをぼかそうとしましたが、それは助けになりませんでした。要するに

:ユーザーが

すべてのヘルプのスタイルを変更するにはJavaスクリプトと呼ばれるものよりも、画面の異なる部分をクリックするまで

IEは、表示スタイルの変更をレンダリングしません。

+0

+1この問題を説明するのにうまくやっています。すべての質問だけがとても詳細であれば。 – Marc

+0

ありがとう – VinkoCM

答えて

5

IEがフォーカスを失うまで、チェックボックスのために.onchangeを発火させない場合、ここで.onclickイベントを使用することができます。

2

onclickイベントを使用します。IEのchangeイベントは、要素がフォーカスを失った後に実行されます。

チェックthis example

2

onchangeイベントは明らかにフォーカスがコントロールから離れるときに起こります。ちょうどtype="text"inputと同じです。

代わりにonclickイベントを使用してください。