2011-06-17 17 views
2

C#コードビハインドで動的に作成されたチェックボックスがいくつかあります。たとえば、2つの列を考えてみましょう。これは正常に動作します。C#javascriptの有効/無効チェックボックス

チェックの際に右側のチェックボックスを有効/無効にします。私はコードビハインドのチェックボックスにアトリビュートをつけて、JavaScriptを有効/無効にするようにしています。これは素晴らしいです。

はここのjavascriptです:

function SetPrimaryStatus(target, senders) { 
    var dis = "disable"; 
    var arr = senders.split(","); 
    for (var i = 0; i < arr.length; i++) { 
     if (document.getElementById(arr[i]).checked == true) { 
      dis = ""; 
      break; 
     } 
    } 
    document.getElementById(target).disabled = dis; 
    if (dis == "disable") document.getElementById(target).checked = false; 
} 

私は私が家に無料だと思った...私はちょうど分離コード(CheckBox.Enabled = false;)で作成時に右の列のチェックボックスを無効にする必要があります。 OK。

ここで何らかの理由で、私は左のチェックボックスをチェックすると、正しいものは何もしません。私はjavascriptでアラートを設定して、彼らはいつも起きて...そして、物事は彼らのように設定されているようです。コードビハインドでCheckBox.Enabled = false;を削除すると、再び機能します。

実際、私はいくつかの左のチェックボックスをチェックし、対応する右のチェックボックスを有効にしておくことができます。有効になっているセットを完璧に動作させるセットを実行すると、右のチェックボックスから始まるセットは無効になります。

無効な状態でチェックボックスを開始するためにコードビハインドで設定する必要がある[有効]以外に、JavaScriptが変更できるものがありますか?それは「無効」と比較して真偽の問題ですか?私は両方を試しました。

+0

あなたのページにポストバックはありますか?アップデートパネルはありますか?それはまったく動作しなくなったのですか?それとも最初にページを読み込んだ後に動作しましたか? –

+0

このチェックボックスのチェック/チェックを外す際にポストバックは発生しません。したがって、更新パネルは役割を果たしていません。コードビハインドで動的チェックボックスを有効にしたままにしておくと、負荷がかかったときに有効にするチェックボックスのいくつかを設定すると機能しなくなります。すべてがまだjavascriptを通ります。ポストバックはないので、最初のロードはありません.2番目のロードのことが起こっています。 – Metallicraft

答えて

0

私は答えをここに見つけました:http://forums.asp.net/t/982967.aspx/1

私のjavascript機能にdocument.getElementById(target).parentElement.disabled = dis;を追加する必要がありました。すべては現在期待通りに動作します。みんなのおかげでありがとう。

0

「無効」属性を追加してみてください。すなわち

CheckBox.Attributes["disabled"] = "disable"; 

はとにかく私はそれが空の文字列値です設定する代わりに.removeAttribute("diabled")メソッドを使用する方がよいと思います。

+0

私は両方の方法(CheckBox.Enabled = falseとCheckBox.Attributes ["disabled"] = "disable")を試しました。同じ結果。 – Metallicraft