
ラジオボタンでreadonlyの切替えをしたいのですが、どうもうまくいきません。ラジオボタンの値の拾い方でつまづいているようです。
<script Language="JavaScript">
<!--
function set( n ) {
document.main.Submit.value = document.main.elements[n].value;
document.main.Submit.style.backgroundColor = document.main.elements[n].style.backgroundColor;
document.main.年月日.value = 'やっほ';
document.main.年月日.style.background = 'white';
if (document.main.shori.value = '複写'){
document.main.年月日.readOnly = '';
alert(document.main.shori.value);
}
else if (document.main.shori.value = '修正'){
alert(document.main.shori.value);
document.main.年月日.readOnly = ture;}
}
// -->
</script>
<FORM NAME=main ACTION="★" METHOD="POST">
<INPUT TYPE="RADIO" NAME="shori" VALUE="修正" CHECKED onClick="set(0);">修正 <INPUT TYPE="Radio" NAME="shori" VALUE="複写" onClick="set(1);">複写<BR>
<INPUT TYPE="text" NAME="年月日" SIZE="20" VALUE="" readonly style="background-color : #FFCCCC;" style="ime-mode: inactive">
<INPUT TYPE="SUBMIT" NAME="Submit" VALUE="送信"></form>

No.2ベストアンサー
- 回答日時:
まず、#1の方も指摘されていますが、フォーム部品の名前に全角文字は使わないようにした方が良いですね。
エラーの原因になることが多々あります。それで、ラジオボタンの利用法ですが、ラジオボタンがチェックされているかどうかを拾う必要があると思いますよ。 document.フォーム名.ラジオボタン名[x].checkedというプロパティが真であるかどうかをチェックしないといけないでしょう。 特定のラジオボタンがチェックされているかどうかを拾うには、ラジオボタンはJavaScriptでは配列として管理されていますので、そのフォーム名とラジオボタン名に加えて、配列の番号を付記して行います。
ラジオボタンを拾って動作をチェックする部分のスクリプトを、以下のようにしてみてはいかがでしょうか。
if (document.main.shori[1].checked){
document.main.dated.readOnly= false ;
alert(document.main.shori[1].value);
}
else if (document.main.shori[0].checked){
alert(document.main.shori[0].value);
document.main.dated.readOnly= true ;}
多分これでうまく動いてくれると思います。
なお、readOnly属性の操作で、書込み禁止を解除する場合には、値なしを引き渡すよりもfalseを渡した方が確実ですよ。
ラジオボタンの扱いは、他のタイプのものとはちょっと違うので、慣れが必要ですね(私も先日こちらの回答で、ラジオボタンの扱いについて間違ったことを書いてしまいました…)。
参考になれば幸いです。 見当違いでしたら、ごめんなさい。
回答ありがとうございました。
アドバイスのとおりで動きました。
>ラジオボタンがチェックされているかどうかを拾う必要があると思いますよ。
この点があいまいなままでやっていました。どうも動きが違うと繰り返していたらこのせいなのですね。
No.3
- 回答日時:
>ラジオボタンの値の拾い方でつまづいているようです。
上記の通りだ何故かラジオボタンをクリックした時に関数を呼び出ししかも何故かそれぞれのラジオボタンに特有の引数を入れてるのでそれを利用すればわざわざdocumentを使わなくても場合わけで切るのでは?
if(n==0){
修正のラジオボタンを押した時の処理
}else if(n==1){
複写のラジオボタンを押した時の処理
}
if(n==1)は省略しても大丈夫なはずですが一応入れておきました。
回答ありがとうございました。
>わざわざdocumentを使わなくても場合わけで切るのでは?
確かに、提示した中身だけだとそのとおりなのですが、員数の部分を今後なしにするつもりなので今回の質問になってしまいました。
No.1
- 回答日時:
とりあえず
フォームの名前は全角文字は使わないように。
とりあえず、何をしようとしているのでしょうか?
document.main.年月日.value = 'やっほ';
document.main.年月日.style.background = 'white';
はif文の外にありますが(つまり関数が呼び出されるたびに動作しますが)それでいいのでしょうか?
あと
document.main.Submit.style.backgroundColor = document.main.elements[n].style.backgroundColor;
は何をしようとしているのでしょうか?
回答ありがとうございました。
>はif文の外にありますが(つまり関数が呼び出されるたびに動作しますが)それでいいのでしょうか?
すみません。この部分はやりたいことと直接には関係ない部分でした。
>document.main.Submit.style.backgroundColor = document.main.elements[n].style.backgroundColor;
は何をしようとしているのでしょうか?
ここも同様でした。 (^^;
よけいな部分が多すぎる質問でした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onClickイベントの変更方法
-
テキストボックスへの引数によ...
-
removeEventListenerの必要性
-
Javascriptのhtml出力についてa...
-
javascriptの基本的なことだと...
-
教えてください><
-
VBAのIE操作でframe構造のサイ...
-
webページ上のTabキーの動き
-
重い処理とはどのようなものが...
-
ラジオボタンでreadonlyの切替え
-
このプログラムを改善してくれ...
-
ネスケ6以上でも動作させたいの...
-
document.onkeydownについて
-
window.createPopUp でスクロー...
-
javascriptを使った画像のキャ...
-
<a>タグのテキストを取得
-
ローカルにあるファイルを検索...
-
Excel VBA の ChangeFileAccess
-
ActiveXobjectが作成できない
-
同じIDで定義した要素の配列を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DOM要素を削除しても、イベント...
-
XMLでのAttributeを持ったNode...
-
Latexに関する質問です。
-
javascriptの基本的なことだと...
-
JavaScript window.openで開く...
-
excle VBA とweb上の検索を利用...
-
VBAのIE操作でframe構造のサイ...
-
iframeのソースを取得したい
-
FireFoxのjavascriptで自動でキ...
-
UWSCでオンクリックのボタンを...
-
VBAでIEのボタンを押してメッセ...
-
ブラウザ情報の件で困ってます...
-
Null またはオブジェクトではあ...
-
繰り返し処理で記述したいのです。
-
webページ上のTabキーの動き
-
onClickイベントの変更方法
-
ブラウザのウィンドウサイズに...
-
removeEventListenerの必要性
-
乗換案内 VBAで操作したい
-
文字を一文字ずつ表示
おすすめ情報