- PR -

チェックボックスのdisabledについて

1
投稿者投稿内容
トリ
会議室デビュー日: 2006/12/07
投稿数: 5
投稿日時: 2007-04-09 11:50
こんにちわ

現在、asp.net2003で
cbxAというチェックボックスがチェックされたらcbxBというチェックボックスが使用可能にするという処理をjavascriptで実装しています。

if (document.getElementById('cbxA').checked == true)
{
document.getElementById('cbxB').disabled = false;
}else{
document.getElementById('cbxB').disabled = true;
}
この処理をcbxAのonclickイベントで呼び出しています。

cbxBをC#側のpage_load時にenabled=trueにしていると基本的にはうまく動くのですが、
enabled=falseにしていた場合、動作しなくなってしまいます。
エラーにはならないのですが、無視されているようです。
値の設定などはfalseでも出来るのですが、disabledだけ動作しません。

どなたかご存知の方いませんでしょうか。

(ちなみにチェックボックスのイベント処理をPostbackで設定するやり方はPostbackを減らす目的で今回javascript側の処理に移行しているので出来ません)
未記入
大ベテラン
会議室デビュー日: 2006/12/15
投稿数: 157
投稿日時: 2007-04-09 12:54
CheckBox メンバ
disabledプロパティって見当たらないんだけど・・・
enabledプロパティにFalse設定するんでわ?
System.Web.UI.WebControls.CheckBoxですよね?
トリ
会議室デビュー日: 2006/12/07
投稿数: 5
投稿日時: 2007-04-09 13:05
disabledを設定しているのはjavascript側です。
javascriptだとdisabledが設定できるのですが、
javascriptだとdisabledじゃないとうまく動かなくないですか?

おしゃる通りSystem.Web.UI.WebControls.CheckBoxです。
未記入
大ベテラン
会議室デビュー日: 2006/12/15
投稿数: 157
投稿日時: 2007-04-09 13:22
失礼。クライアント側の話でしたね、ものすごい勘違いしてました。
むか〜しの同じような話
根底部分は未解決のようですけどかえでさんの発言あたりを参考までに・・・
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-04-09 13:36
動作している環境が JavaScript なのか、それとも C# なのかがわかり
にくくなっているために、未記入さんに勘違いをさせている可能性がありそ
うな気がします。

コード:

if (document.getElementById('cbxA').checked == true)
{
    document.getElementById('cbxB').disabled = false;
}else{
    document.getElementById('cbxB').disabled = true;
}


このコードは JavaScript なのは見ればわかるのでまぁいいとして。

引用:

この処理をcbxAのonclickイベントで呼び出しています。


この時点での「cbxA の onclick イベント」はたぶん JavaScript なんじゃ
ないかなー?ぐらいに曖昧だと思うのです(文章としてね)。
まぁコードが JavaScript なので、やっぱり JavaScript だろう…と脳内
では一応の解決をみるわけですが、たまにサーバとクライアントの違いが
認識できていない質問を見かけるので、ついそこで懐疑的になってしまう
わけです(トリさんは大丈夫だと思いますが)。

ただ

引用:

cbxBをC#側のpage_load時にenabled=trueにしていると基本的にはうまく動くのですが、
enabled=falseにしていた場合、動作しなくなってしまいます。


この文章は結構グレーかなぁと。
C# 側の、と正しく書いているわけですが、ちょっと読み飛ばしてしまうと
page_load も enabled=true も JavaScript で書きそうなコードだし
…えっとどっちのことやろ?とパニックになりそうです。

とまぁ、戯れ言はこの辺にして。
本題ですが、とりあえず出力されている HTML を見てみないことには何と
も言えないかもなぁ…でも手元に ASP.NET の環境ないしなぁ…と思って
いたところ、こんなスレッドを見つけました。

ここで

引用:

ASP.NETのCheckBoxコントロールは

<span disabled="disabled"><input id="CheckBox1" type="checkbox" name="CheckBox1" disabled="disabled" /></span>

のようにspanで囲まれて出力されます。
なので、このspanもdisabledの設定をする必要があります。


という話が出ていますが、この span には名前がないので JavaScript
で操作するのは難しそうですね。
………思考中です。しばらくお待ちください。
えーと、アレだ、
System.Web.UI.WebControls.CheckBox.Enabled プロパティを使
わずに、Attributes["disabled"] = "true"; とかやってみたり。

# と、妄想にふけっていたら未記入さんに先を越されてしまったわけだが
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
トリ
会議室デビュー日: 2006/12/07
投稿数: 5
投稿日時: 2007-04-09 14:02
>ぽぴ王子さん
ちょっと書き方曖昧でしたね。すみません
もうちょっとわかりやすい文章書くように注意します。

未記入さんのリンクとぽぴ王子さんのリンクから
SPAN要素のDISABLED属性も変更しないといけないということみたいですね。

そこで、
document.getElementById("cbxB").parentElement.disabled = false
を設定してみたところうまく動きました。

ただ、ぽぴ王子さんのリンクの中でモン吉君さんの
引用:
--------------------------------------------------------------------------------

JavaScriptによる処理で終了する場合、checked属性が期待しない結果になります。

--------------------------------------------------------------------------------

というのがちょっと気になってますが...

とりあえず、解決したと思います。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)