私の ASP.NET Web アプリケーションには、コード ビハインドで無効にできる要素と、JavaScript で無効にできる要素がいくつかあります。
コード ビハインド要素については、次の VB.NET プロパティを使用するだけです。
Me.element1.Enabled = False
動的要素には、次の JavaScript プロパティを使用します。
document.getElementById('" & Me.element2.ClientID & "').disabled = true;
最初に気付いたのは、Enabled プロパティを変更するdisabled="disabled"
と、マークアップが追加されるだけでなく、クラスがbutton
(ボタンのスキン クラス名) から に変更されることbutton aspNetDisabled
です。これを補うために、次の JavaScript 行を追加します。
document.getElementById('" & Me.element2.ClientID & "').className = 'button aspNetDisabled';
(明らかに、これは、要素を再度有効にする場合、またはそのときに className 属性を維持する必要があることを意味します。必要に応じてbutton
/ textbox
/etc. を使用するようにする必要があります。ボーナス ポイントについては、これに関する推奨事項があれば、聞いてくれると嬉しいです)
disabled=""
ただし、JavaScriptによって生成されるマークアップは のみであるのに対し、ASP.NET Enabled プロパティの変更によって生成されるマークアップは であることにも気付きましたdisabled="disabled"
。
JavaScript をいじって次のように変更してみました。
document.getElementById('" & Me.element2.ClientID & "').disabled = 'disabled';
ただし、属性がまだ空であるため、これは違いを生むようには見えませんでした。興味深いことにdisabled=true;
、disabled='disabled';
同じように機能するようです-そのうちの1つがより正しいと思います(=true;
今のところ固執しています)。
要素の有効化と無効化に関して、サーバー側の ASP.NET と同じ結果を JavaScript で実現するための推奨される最良の方法はありますか?
と...
disabled="disabled"
とのレンダリングの違いによってdisabled=""
問題が発生する可能性はありますか?