単二電池

WEBで簡単なアンケートを取ろうと思い、form を書いたのですが、一部、思ったようになりません。
お知恵をお貸しください。

希望するメール本文は、
Q1の回答, Q2aのチェック状況, Q2aの自由記述、Q2bのチェック状況,Q2cのチェック状況, Q2cの自由記述、Q2dのチェック状況
というカンマで区切られた回答一覧なのですが、
Q1に関しては希望した動作になりますが、Q2が、チェックを入れても入れなくても、チェック状況はa,b,c,d が帰ってきます。
チェックをしないとき、該当項目が空欄になる、あるいは別の文字になるようにする方法、教えてください。


<html>
<body>

<form onsubmit="return sendmail(this)">
<b>Q1</b> <br>
<select name="Q1">
<option selected value="3">改善された</option>
<option value="2">変わらない</option>
<option value="1">改悪された</option>
<option value="0">わからない</option>
</select><br> <br>

<b>Q2</b> <br>
<input type="checkbox" value="a" name="Q2"> 項目 <input style="HEIGHT: 20px; WIDTH: 271px" size="25" name="Q4a1">が欠如している<br>
<input type="checkbox" value="b" name="Q2"> 必要十分である<br>
<input type="checkbox" value="c" name="Q2"> 不要な項目 <input style="HEIGHT: 20px; WIDTH: 326px" size="24" name="Q4c1">がある<br>
<input type="checkbox" value="d" name="Q2"> わからない<br>

<br>
<br>
<input style="HEIGHT: 53px; WIDTH: 109px" size="13" type="submit" value="メール作成" name="send">

<script type="text/javascript">
F=document.getElementsByTagName('form')[0];

function sendmail(F){

title = [
'アンケート回答'
].join('%20');

cmnd = [
F.elements[0].value,",",
F.elements[1].value,",",
F.elements[2].value,",",
F.elements[3].value,",",
F.elements[4].value,",",
F.elements[5].value,",",
F.elements[6].value
].join('%20');

location.href="mailto:hoge@hoge?subject=" + title + "&body=" + cmnd;
return false;
}
</script></form>

A 回答 (2件)

> F=document.getElementsByTagName('form')[0];


関数 sendmail の引数 F と被っているので不要

> F.elements[0]
この記述方法は今後を考えると危険です
F.elements['Q1'].value // ユニークな名前の場合
F.elements['Q2'][0].value // 同一名で複数ある場合
とするのが良いでしょう

> Q2aのチェック状況
function getChecked(o) { return o.checked? o.value: '' }
var Q2aのチェック状況 = getChecked(F.elements['Q2'][0]);
    • good
    • 0
この回答へのお礼

具体的でわかりやすい回答、ありがとうございます。

希望した動作になりました。

お礼日時:2014/03/03 23:24

javascriptじゃなくちゃんとCGIを設置しましょう。


・メールアドレスを収集されて膨大なSPAMを受け取る羽目になります。
・ブラウザにメーラーを設定している人しか使えない
・文字化けで読めないメールが届く
 ⇒CGI RESCUE - CGIフリーソフト( http://www.rescue.ne.jp/ )
の上から2/3あたり
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>・メールアドレスを収集されて膨大なSPAMを受け取る羽目になります。
なるほど、使い方を誤ると、そのような危険もあるのですね。

貴重なアドバイスありがとうございます。

お礼日時:2014/03/03 23:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!