• ベストアンサー

ラジオボタンでreadonlyの切替え

ラジオボタンで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>

質問者が選んだベストアンサー

  • ベストアンサー
noname#199778
noname#199778
回答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を渡した方が確実ですよ。 ラジオボタンの扱いは、他のタイプのものとはちょっと違うので、慣れが必要ですね(私も先日こちらの回答で、ラジオボタンの扱いについて間違ったことを書いてしまいました…)。 参考になれば幸いです。 見当違いでしたら、ごめんなさい。

s-holmes
質問者

お礼

回答ありがとうございました。 アドバイスのとおりで動きました。 >ラジオボタンがチェックされているかどうかを拾う必要があると思いますよ。 この点があいまいなままでやっていました。どうも動きが違うと繰り返していたらこのせいなのですね。

その他の回答 (2)

回答No.3

>ラジオボタンの値の拾い方でつまづいているようです。 上記の通りだ何故かラジオボタンをクリックした時に関数を呼び出ししかも何故かそれぞれのラジオボタンに特有の引数を入れてるのでそれを利用すればわざわざdocumentを使わなくても場合わけで切るのでは? if(n==0){ 修正のラジオボタンを押した時の処理 }else if(n==1){ 複写のラジオボタンを押した時の処理 } if(n==1)は省略しても大丈夫なはずですが一応入れておきました。

s-holmes
質問者

お礼

回答ありがとうございました。 >わざわざdocumentを使わなくても場合わけで切るのでは? 確かに、提示した中身だけだとそのとおりなのですが、員数の部分を今後なしにするつもりなので今回の質問になってしまいました。

回答No.1

とりあえず フォームの名前は全角文字は使わないように。 とりあえず、何をしようとしているのでしょうか? document.main.年月日.value = 'やっほ'; document.main.年月日.style.background = 'white'; はif文の外にありますが(つまり関数が呼び出されるたびに動作しますが)それでいいのでしょうか? あと document.main.Submit.style.backgroundColor = document.main.elements[n].style.backgroundColor; は何をしようとしているのでしょうか?

s-holmes
質問者

お礼

回答ありがとうございました。 >はif文の外にありますが(つまり関数が呼び出されるたびに動作しますが)それでいいのでしょうか? すみません。この部分はやりたいことと直接には関係ない部分でした。 >document.main.Submit.style.backgroundColor = document.main.elements[n].style.backgroundColor; は何をしようとしているのでしょうか? ここも同様でした。 (^^; よけいな部分が多すぎる質問でした。

関連するQ&A

  • なぜエラー?

    いつもコピペでjavascriptを活用しています。 (^^; 下記の2個のRADIOボタンのうち1個を削除するとエラーになります。なぜ? <script Language="JavaScript"> <!-- function set( n ) { document.main.Submit.value = document.main.shori[n].value; } // --> </script> <FORM name="main"> <INPUT TYPE="RADIO" NAME="shori" VALUE="修正" onClick="set(0);" CHECKED> 修正 <INPUT TYPE="RADIO" NAME="shori" VALUE="複写" onClick="set(1);"> 複写 <INPUT TYPE="SUBMIT" NAME="Submit" > </FORM>

  • ラジオボタンとonchange

    質問が2つあります。 1、下記が正常に動きません。どこがおかしいのでしょう・・ (^^; 2、下記のような内容で、選択肢が増えた時に、もっと簡単に書く方法が知りたい。 <script Language="JavaScript"><!-- function set() { uriage = document.main.売上.value; omake = document.main.クーポン使用.value; if(document.main.クーポン.value = 1) {document.main.料金.value = uriage ;} else if(document.main.クーポン.value = 2) {document.main.料金.value = uriage-omake ;} } // --> </script> <FORM name="main" ACTION="★" METHOD="POST"> <INPUT TYPE="HIDDEN" NAME="売上" SIZE="-1" VALUE="1500"> <INPUT TYPE="HIDDEN" NAME="クーポン使用" SIZE="-1" VALUE="750"> <INPUT TYPE="RADIO" NAME="クーポン" VALUE="1" onChange="set(this)">クーポン使用しない<BR> <INPUT TYPE="RADIO" NAME="クーポン" VALUE="2" onChange="set(this)">使用する<BR> <P> <INPUT TYPE="TEXT" NAME="料金" SIZE="12"> <INPUT TYPE="SUBMIT" NAME="SUBMIT_BUTTON" VALUE="送信"></TD> </form>

  • for ( i = 0; i ・・の使い方?

    下記は普通に動きますが、ラジオボタンの内容をデータベースによって変更しているためボタンが1個だけの場合があります。その場合にもエラーにならない書き方についてアドバイスいただけないでしょうか。 <SCRIPT language=JavaScript> function set( n ) { for ( i = 0; i < document.main.shori.length; i++ ) { if ( document.main.shori[i].checked ) { shori_value = document.main.shori[i].value } } alert(shori_value) } </SCRIPT> <body onLoad="set(0);"> <FORM NAME=main> <INPUT TYPE="RADIO" NAME="shori" VALUE="1" onClick="set(0);" CHECKED>1  <INPUT TYPE="RADIO" NAME="shori" VALUE="2" onClick="set(1);">2 </form>

  • 選択したたラジオボタンの値をSUBMITボタンに

    選択したたラジオボタンの値をSUBMITボタンの名前として自動的に替えたいのですが、助言をいただけますか。 イメージは下記です。★の部分に、クリックごとにradioの値を入れたいのです。 <script Language="JavaScript"><!-- function set() { n = document.myFORM.Radio.value; } // --> </script> <FORM ACTION="add.cgi" METHOD="POST" name="myFORM"> <INPUT TYPE="RADIO" NAME="Radio" VALUE="東京" onclick="set()" CHECKED> <INPUT TYPE="RADIO" NAME="Radio" VALUE="大阪"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="★"></form>

  • 選択によってsubmitボタンの色を変える

    先程関連質問の回答をいただいた者なのですが、ラジオボタンの内容によってsubmitボタンの色を変えるところまで実現したいのですが、東京ならsubmitボタンはピンク、大阪ならsubmitボタンはブルーにしたいと思います。この場合は、submitボタンのところでIF文で分岐させればいいものでしょうか。 <html> <head> <script Language="JavaScript"> <!-- function set( n ) { document.myFORM.Submit.value = document.myFORM.elements[n].value; } // --> </script> </head> <body onLoad="set(0);"> <FORM ACTION="add.cgi" METHOD="POST" name="myFORM"> <INPUT TYPE="RADIO" NAME="Radio" VALUE="東京" onClick="set(0);" STYLE="background-color:pink" checked> <INPUT TYPE="RADIO" NAME="Radio" VALUE="大阪" onClick="set(1);" STYLE="background-color:blue"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="★" STYLE="background-color:pink"> </form> </body> </html>

  • ラジオボタンでうまくするには・・・・

    初めまして。 現在下記のプルダウン形式で、一つの価格が同じなので問題なく動くのですが <FORM action="cart/sys/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=hidden value=2000 name=tan> <SELECT name=sur> <OPTION value="" selected>購入数量</OPTION> <OPTION value=1>1</OPTION> <OPTION value=2>2</OPTION> <OPTION value=3>3</OPTION> <OPTION value=4>4</OPTION> <OPTION value=5>5</SELECT> <INPUT type=submit value=カートに入れる> </FORM><BR> <FORM action="・・・/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=hidden value=2000 name=tan> </FORM> 同じ商品で1・2・3・4・5のそれぞれに単価が変わる設定をしたいのですが、うまくいく方法が見つからないです。 ラジオボタン形式で作ってみたものの・・・・ <FORM action="・・・/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=submit value=カートに入れる> </FORM> <FORM> <INPUT type="radio" name="name1" value="2000">1袋<BR> <INPUT type="radio" name="name1" value="3900">2袋<BR> <INPUT type="radio" name="name1" value="5800">3袋<BR> <INPUT type="radio" name="name1" value="7500">4袋<BR> <INPUT type="radio" name="name1" value="8500">5袋</FORM> としてみましたがうまくいきません。 なにか方法ございましたら、ご教授いただければと思います。

    • ベストアンサー
    • HTML
  • ラジオボタンについて

    つまらない質問ですがどうか教えてください。 <form name="myform"> ・ ・ ・ <INPUT TYPE="RADIO" NAME="R1" VALUE="1">関連あり</INPUT> <INPUT TYPE="RADIO" NAME="R1" VALUE="2">関連なし</INPUT> <INPUT TYPE="RADIO" NAME="R1" VALUE="3">不明</INPUT> </form> 上記のようなラジオボタンを作ったのですが、 このラジオボタンのチェックされた値を取得するには document.myForm.cGyoumu.value ではできないのでしょうか? LOOPさせながらdocument.myForm.elements(i).checked で探さないと取得できないのでしょうか? 同じフォーム内にラジオボタンが複数あるため、 この方法はあまりやりたくありません。 ほかに方法がありましたら、どうか教えてください。

  • ラジオボタンによる有効なボタンの切り替えについて

    はじめまして。 下記のような機能を実装したいと思っています。 どなたか教えていただけませんでしょうか? <html> <head> <title>サンプル</title> </head> <input type="radio" name="radio1" value="a">A <input type="radio" name="radio1" value="b">B <input type="radio" name="radio1" value="c">C <input type="radio" name="radio1" value="x">全部ダメ <br><br> <input type="button" value="Aボタン"> <input type="button" value="Bボタン"> <input type="button" value="Cボタン"> </body> </html> ラジオの「A」を選択すると「Aボタン」のみ有効で他は無効(disabled)になり 「B」を選択すると「Bボタン」のみ有効というように、 選択したラジオボタンの値と有効なボタンを連動させたいのです。 さらに、ラジオの「全部ダメ」を選択すると全てのボタンを無効としたいです。 ラジオボタンの値の取得のjavascriptなど個々の機能について調べてみたりしたのですが どのように組み合わせれば、機能を実現できるのかわかりませんでした。 お手数ですが、ご教示いただけますでしょうか。。 可能ならばソースのサンプルをいただけるとありがたいのですが。 どうぞよろしくお願いいたします。

  • 複数のラジオボタンのチェック

    複数のラジオボタンが全て選択されているかどうかのチェックのJavaScriptをすっきりした形で書くのは、どうしたらいいでしょうか? 下記のようですと、ダラダラと記述するようになってしまいます。 どなたかご教授ください。 --------------------------------------- <script type="text/javascript"> function insert_onClick() { j=0; for (i=0 ;i < document.F1.a11.length ; i++){ if (document.F1.a11[i].checked) { j=1; } } } </script> <form action="check.php" name="F1" onsubmit="return insert_onClick()"> 各valueは0~4まであります <input type="radio" name="a11" value="0"> <input type="radio" name="a12" value="0"> <input type="radio" name="a21" value="0"> <input type="radio" name="a22" value="0"> <input type="radio" name="b11" value="0"> <input type="radio" name="b12" value="0"> <input type="radio" name="b21" value="0"> <input type="radio" name="b22" value="0"> ---------------------------------------

  • ラジオボタンについて

    ラジオボタンのnameにそれぞれ違う名前をつけても 選択の制限を1つだけにできるやり方はありませんか? 例 <input type="hidden" name="a1" value="0151" /> <input name="a" type="radio" value="1" /> <input type="hidden" name="b1" value="0152" /> <input name="b" type="radio" value="1" /> <input type="hidden" name="c1" value="0153" /> <input name="c" type="radio" value="1" /> 私がやりたいことはあるプログラムシステムで使用するため ラジオボタンの上にhiddenでそれぞれ指定してるため このような形で表示できないかと、おもっています。

    • ベストアンサー
    • HTML

専門家に質問してみよう