• 締切済み

ラジオボタン選択と吐き出し方法について

<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <script> function update(fm) { var output = ""; output += "依頼者:"; if (!fm.irai[4].checked) { for (var i = 0; i <= 3; i++) { if (fm.irai[i].checked) { output += fm.irai[i].value; } } } else { output += fm.hoka.value; } output += "\n"; output += "連絡先:"; output += fm.t.value; output += "\n"; output += "訪問者:"; if (!fm.houmon[4].checked) { for (var i = 0; i <= 3; i++) { if (fm.houmon[i].checked) { output += fm.houmon[i].value; } } } else { output += fm.hoka2.value; } output += "\n"; output += "連絡先:"; output += fm.t2.value; output += "\n"; fm.yoyaku.value = output; } </script> </head> 依頼者・訪問者共にhtml部分は以下の形式です。 <Tr> <Td Valign="top" Width="20%"> <input type="radio" name="irai" value="本人">本人 </Td> <Td Valign="top" Width="20%"> <input type="radio" name="irai" value="奥さま">奥様 </Td> <Td Valign="top" Width="20%"> <input type="radio" name="irai" value="お嬢さま">娘 </Td> <Td Valign="top" Width="20%"> <input type="radio" name="irai" value="ご子息さま">息子 </Td> </Tr> <Tr> <Td ColSpan="4"> <input type="radio" name="irai">その他 <input type="text" size="21" name="hoka"> </Td> </Tr> </Table> <Table Border="1" Width="250"> <Tr> <Td ColSpan="4" Align="Center"> <B>依頼者の連絡先</B> </Td> </Tr> <Tr> <Td Valign="top"> 番号:<input type="text" size="27" name="t"> </Td> </Table> 訪問者はnameがhoumon、電話番号のnameがt2となっています。 依頼者:「依頼者」選択内容 連絡先:(依頼者の連絡先) 訪問者:「訪問者」選択内容 連絡先:(訪問者の連絡先) と吐き出されるようになっているのですが、 依頼者と訪問者で同じラジオボックスを選択した場合、 訪問者の番号欄がグレーアウトし、 吐き出しエリアには「依頼者:訪問者:(選択内容)」と反映するようにしたいのですが、 そのような事は可能なのでしょうか。 ※作業手順として、依頼者選択⇒電話番号入力⇒訪問者選択となるので、 訪問者を選択した段階で、依頼者と同じであれば、上記のように動作させたい ※その他の場合は、上記のように作動せず、両方とも入力・反映するようにしたいです。 もし可能であれば、JavaScript部分をご教示頂けませんでしょうか。 よろしくお願い致します。 ※文字数制限で、ソース全体を記載する事ができませんでした… (JavaScript部分は全文記載) 必要であれば、回答への補足として続きのソースを記載させて頂きます。

みんなの回答

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

function update(fm)もそのまま活かすんだから、 if(check){ for(var i=0;i<fm.elements["houmon"].length;i++) fm.elements["houmon"][i].disabled = "disabled"; fm.elements["hoka2"].disabled = "disabled"; fm.elements["t2"].disabled = "disabled"; fm.elements["yoyaku"].value = "依頼者:訪問者:" + target.value + "\n連絡先:" + fm.elements["t"].value; for(var i=0;i<fm.elements["houmon"].length;i++) fm.elements["houmon"][i].checked = ""; }else{ ..... にしとかなきゃ.. 失念してた

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

そのフォーム<form>に<form onclick="hoge(event,this);">とonclickを付けられるなら。 あなたのupdate(fm)はそのままにして、 function hoge(event,fm){  var target = event.target || event.srcElement;  var check = false;  if(target.name == "irai"){    for(var i=0;i<fm.elements["houmon"].length;i++)    fm.elements["houmon"][i].disabled = "";    fm.elements["hoka2"].disabled = "";    fm.elements["t2"].disabled = "";  }  if(target.name == "houmon"){   for(var i=0;i<fm.elements["irai"].length;i++){    if(fm.elements["irai"][i].value == target.value      && fm.elements["irai"][i].checked)    check = true;   }   if(check){    for(var i=0;i<fm.elements["houmon"].length;i++)    fm.elements["houmon"][i].disabled = "disabled";    fm.elements["hoka2"].disabled = "disabled";    fm.elements["t2"].disabled = "disabled";    fm.elements["yoyaku"].value = "依頼者:訪問者:" + target.value    + "\n連絡先:" + fm.elements["t"].value;   }else{    for(var i=0;i<fm.elements["houmon"].length;i++)    fm.elements["houmon"][i].disabled = "";    fm.elements["hoka2"].disabled = "";    fm.elements["t2"].disabled = "";   }  } } を追加すべし.. 注:全角空白でインデントしてます。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

function update(fm)がいつ呼ばれるのか書いてないですが、おそらくサブミットの時だとするとするとこのやり方では無理ですよね、入力してる途中で判定する必要があるわけですからDOMイベントを使って、チェックした人が、依頼者と同じか判定して、houmonの方をdisableにして、outputの中身はiraiの方を使う処理に書き換えればよいでしょう。簡単だと思います。 DOMイベントの取得がよくわからなければ、とりあえずはイベント属性(onclick)でも訪問のラジヲボタンにつけとけばあ...

関連するQ&A