2012-03-13 14 views
3

私はそうのようなのCheckBoxListのチェックボックスを無効にするには、いくつかのJavaScriptを使用しています:なぜASP.NETで "javascript" checkbox.disable "関連するラベルが灰色にならないのですか?

 var objItem = document.getElementById("<%= resCBL.ClientID %>"); 
     var checkBoxes = objItem.getElementsByTagName("input"); 

     if (form1.secTB.value == 0) { 
      checkBoxes[0].disabled = true; 

このコードは、正常に動作しますが、ページをIEでレンダリングする場合、チェックボックスのテキスト属性がラベルとして表示されますチェックボックスとテキストの代わりに、チェックボックスだけがグレー表示されているように見えます。

私は単に.aspxの分離コードで

Enabled = false 

を設定した場合、それはすべてをグレーが、再度有効CBと非灰色のラベルに(私の現在のメソッドで)それは不可能になります。

誰でもこの問題を回避する方法を教えてもらえますか。

答えて

2

- 障害がないので、これはなぜチェックボックスを設定していますテキストをグレーアウトします。

IEからページを表示すると、ASP.NETは<input>と関連付けられ、<label><span disabled="disabled">にラップされます。 IEはスパン内のすべての要素を無効にするため、チェックボックスとラベルが無効になります。

しかし、スパンはフォーム要素ではないため、他のほとんどのブラウザはW3C rulesに続き、「無効」属性を無視します。チェックボックスの周りのスパンを無効にするのはIEでのみ有効です。

私が考えることができる最も簡単な解決策は、この動作を手動で複製することです。チェックボックスを有効/無効にするときは、CSSを使用してスパンをスタイルし、すべてのブラウザで効果を発揮させます。

var objItem = document.getElementById("<%= resCBL.ClientID %>"); 
var checkBoxes = objItem.getElementsByTagName("input"); 

if (form1.secTB.value == 0) { 
    checkBoxes[0].disabled = true; 
    checkBoxes[0].parentNode.class = "disabled"; 
} 

P.S.私がsnarkyと聞こえると申し訳ありません - IEはいつもそれを無限の "複雑さ"で私を悩ます

+0

これは上記の問題に対する優れた解決策です。間違いなくsnarkyに聞こえなかった - 私はIEの「つかの間」もかなりイライラしていると感じていて、W3C標準を大いに好んでいる。 – Ray

+1

アップデートとして、 ''の入力がそれ自身で無効になっても、IE10以降はラベルを灰色にしないことに注意してください。 –

4

代わりCheckBoxInputAttributesにdisabled属性を追加します。

CheckBox1.InputAttributes.Add("disabled", "disabled"); 

http://geekswithblogs.net/jonasb/archive/2006/07/27/86498.aspx

問題が<asp:checkbox />制御は、次のように出てレンダリングされることを示します。

<span><input type='checkbox'></span> 

本物を次のようなチェックボックスがあると問題が発生します:<asp:CheckBox Enabled="false"/>

これは、次のように出てレンダリングされる:あなたは、チェックボックスコントロールからHTML出力を見ればあなたは、関連する<label for="checkbox_client_id">Text</label>があるわかります

<span disabled='disabled'><input type='checkbox' disabled='disabled'></span> 
+0

MyCheckBox.disabled = false; MyCheckBox.parentNode.disabled = false;コメントで述べたように、かなりうまくいく。それがなぜこのようにレンダリングされるのか興味がありますか?かなり明らかな問題のように思えます... – Ray

関連する問題