- PR -

ラジオボタンの値で活性or非活性の制御をしたい

1
投稿者投稿内容
ショコラ
会議室デビュー日: 2005/09/21
投稿数: 5
投稿日時: 2005-09-21 15:45
みなさま、はじめまして。
(いきなり会議室を間違えて投稿してしまいました。)

ラジオボタンの値によって画面項目の活性/非活性を制御しようとしています。
ページロード時に
button_0.Attributes.Add("onclick", "r();")
というふうに実装して、JavaScriptの関数を呼び出しています。
そのJavaScriptの内容↓
=================================================================
ラジオボタンの値が"1"だったら。

AAAAA.abc.readOnly = 1;
AAAAA.abc.className = 'ReadonlyString';

ラジオボタンの値が"2"だったら。

AAAAA.abc.readOnly = 0;
AAAAA.abc.className = 'String';

==================================================================

とうい形で行っています。
Classで項目の色の制御を行っています。
(ReadOnly=Trueの場合は、灰色、Falseの場合は白のような制御です)

しかし、ReadOnlyが効かなかったり、Classが適用されていなかったりします。
(さわれないのに、テキストボックスは白など・・・)

ALERTを入れて動作確認もしたのですが、きちんと最後まで
処理は流れているように見えます。

画面上にはタブが3つあります。

どなたか解決策をご存知でしたら教えて頂けないでしょうか。
よろしくお願いいたします。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-09-21 16:20
これだけだとちょっと情報が足りませんね(^^;

>画面項目の活性/非活性を

画面項目ってテキストボックスだけでしょうか?他にもある?

>AAAAA.abc.readOnly = 1;

AAAAAはFormのnameでabcはテキストボックスのnameでしょうか?

>画面上にはタブが3つあります。

タブって何でしょう?

とりあえず情報が足りないところを予測で補完してテスト用のHTMLを作ったら、IE6では問題無く動作しました。ご自分のコードと見比べてみて、それでも解決しなかったら、もちょっと詳しい情報をのっけてください。

コード:


<html><body>
<style type="text/css">
.String {background-color:white;}
.ReadonlyString {background-color:silver;}
</style>
<script language="javascript">
function r() {
if(AAAAA.r0[0].checked) {
AAAAA.abc.readOnly = 1;
AAAAA.abc.className = "ReadonlyString";
} else if(AAAAA.r0[1].checked) {
AAAAA.abc.readOnly = 0;
AAAAA.abc.className = "String";
}
}
</script>
<form id=AAAAA name=AAAAA>
<input type=radio id=r1 name=r0 value=1 onclick=r() checked>
<input type=radio id=r2 name=r0 value=2 onclick=r()>
<input type=text id=abc name=abc readonly class=ReadonlyString>
</form>
</body></html>



[ メッセージ編集済み 編集者: ぼのぼの 編集日時 2005-09-21 16:26 ]
ショコラ
会議室デビュー日: 2005/09/21
投稿数: 5
投稿日時: 2005-09-21 16:48
ほのぼのさん、ご返答ありがとうございますm(__)m
情報不足ですみません。

>>画面項目の活性/非活性を
>画面項目ってテキストボックスだけでしょうか?他にもある?

画面項目は、テキストボックス、ボタンがあります。
ボタンにはDisabledで制御しています。

>>AAAAA.abc.readOnly = 1;
>AAAAAはFormのnameでabcはテキストボックスのnameでしょうか?
その通りです。

タブが3つというのは、タブページのことです。すみません。

ReadOnlyとクラスの切り替えが必要な項目(テキストボックスとボタン)は、
それぞれのタブページに40個くらいあります。
うまくいってる項目といってない項目がタブページに混在しています。
JavaScriptのJSPファイルは、全項目同じように書いています。

よろしくおねがいいたします。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-09-21 17:18
あ、jspだったんですね(^^;
まぁ質問内容がjavascriptなんであんま関係ないですけど、ASP.NETの場合言語の性質上一つのHTML(aspx)に複数のformが存在することが滅多にないってのと、大抵全ての項目にnameの他に一意なidが振られるんで、そこらへんの前提が微妙に違います。

タブページってのが、未だにいまいちわからないんですが、まぁWebである以上基本はHTMLなので、ここはほっといて話を進めますね。

前回あえて書きませんでしたが、「うまくいってる項目といってない項目がある」ってことなんで、スクリプトの構文自体に根本的な誤りは無いってことになりますね。そしたら、あとはうまくいってる項目といってない項目は何が違うのか、が重要になります。ソースを全部見たわけではないのであくまで勘ですけど、nameが怪しいような気がします。HTMLって、同一form内に同じnameが複数あると、自動的に配列になっちゃうので、重複してるnameが無いかチェックしてみてください。

で、nameの重複が原因だった場合は、重複しないnameに変えるか、AAAAA.abcの部分をAAAAA.abc[0]のようにするか、nameとは別にidを振って、document.getElementByIdを使うかするとうまくいくと思います。
ショコラ
会議室デビュー日: 2005/09/21
投稿数: 5
投稿日時: 2005-09-22 08:37
ぼのぼのさん、親切な回答ありがとうございました。
nameの見直しをやってみます。
色々教えていただきありがとうございました。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2005-09-22 09:24
直接は関係ないけど、readOnlyにはtrue/falseを入れて欲しいかも。
1

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