プロが教えるわが家の防犯対策術!

こんにちわ。
JavaScriptでメールフォームのラジオボタンが押印されているかチェックをしています。(全て押印されていないとアラートウィンドウでエラーコメントを表示する。その後数字の正規表現チェックをする予定)
ラジオボタンの「name」は後ほどPHPで連想配列として使用するのでこのような形にしています。
多次元配列の押印チェックとチェックした値の取り出しが出来ません。(例:AA[1]、AA[2]のチェック確認とチェックされた値の取得。取得した値は10個目の配列にひとまず格納したいAA[1][10]、AA[2][10])
どのようにすれば、出来るのかご教授お願いします。

以下のようなソースです。(質問に必要な箇所のみ抜粋しています)


JavaScript---------
function checkForm(){
var flag=0;
var errN;
for ( i = 0 ; i < 3 ; i++)
{if (document.formSample.hoge.checked)
{ flag = 1; var hoge = document.formSample.hoge.value;}}
if(flag !== 1){errN = '[問1]';} flag = 0;

for ( i = 0 ; i < 3 ; i++)
{if (document.formSample.AA[1].checked)
{ flag = 1; var AA[1][10] = document.formSample.AA[1].value;}}
if(flag !== 1){errN = '[問2]';} flag = 0;

for ( i = 0 ; i < 3 ; i++)
{if (document.formSample.AA[2].checked)
{ flag = 1; var AA[2][10] = document.formSample.AA[2].value;}}
if(flag !== 1){errN = '[問3]';} flag = 0;

if(!flag) /*選択されていない問を表示*/
{
alert(errN + '選択してください。');
}
else /*選択されている値を表示*/
{
alert('問1'+hoge+問2'+AA[1][10]+問3'+AA[2][10] );
}

}


HTML-----------------
<form name="formSample" method="post" action="" onSubmit="return checkForm()" >

問1.
<input type="radio" name="hoge" value="1" />低い
<input type="radio" name="hoge" value="2" />普通
<input type="radio" name="hoge" value="3" />高い


問2.
<input type="radio" name="AA[1]" value="1" />低い
<input type="radio" name="AA[1]" value="2" />普通
<input type="radio" name="AA[1]" value="3" />高い

問3.
<input type="radio" name="AA[2]" value="1" />低い
<input type="radio" name="AA[2]" value="2" />普通
<input type="radio" name="AA[2]" value="3" />高



<input type="submit" value="送信">
</form>

A 回答 (1件)

javascriptではnameにカッコをつけても当然配列としてみなされません


formの要素であればelementsとしてnameでアクセスできます

document.formSample.AA[2].checked

そもそもAA[2]のどの要素のcheckedを見ているのか不明
要素ごとにチェックをするのでたとえばこう

document.forms['formSample'].elements['AA[2]'][0].checked
・・・AA[2]という要素群の0番目の要素のcheckedをみる

できればformにもidを振って、document.getElementById()でアクセスした方が確実
    • good
    • 0
この回答へのお礼

yambejpさま

ご回答ありがとうございます!
ああ、、、
「javascriptではnameにカッコをつけても当然配列としてみなされません」
当たり前なことを、すっかり見落としていました。
PHPやらJSやら混乱していたようです。



●document.forms['formSample'].elements['AA[2]'][0].checked
現在この方法でテストしてみて思った通りに動きました。
ひとまず、こちらを使用してみます。

●formにもidを振って、document.getElementById()でアクセス
こちらも、テストをしてみます!

ありがとうございました。

お礼日時:2015/11/12 16:19

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