アプリ版:「スタンプのみでお礼する」機能のリリースについて

例えば以下のようなフォームがあるとき、
-----------------------------------------------------------------------------
<form name="f">
<input type="checkbox" name="group1" id="a" value="a"/><label for="a">a</label>
<input type="checkbox" name="group1" id="b" value="b"/><label for="b">b</label>
<input type="checkbox" name="group1" id="c" value="c"/><label for="c">c</label>
<input type="checkbox" name="group1" id="d" value="d"/><label for="d">d</label>
</form>
-----------------------------------------------------------------------------
javascriptでは、document.f.group1で配列として取得できるのですが、
phpでは、$_POST["group1"]では最後にチェックされている項目しか取得できません。
(つまり、phpでは複数選択されていても、一番後ろの1項目しか取得できません。)

少し調べるとphpで取得するには、
name属性値を、group1からgroup1[]とすれば配列として取得できるとありました。

しかしこれでは、javascriptの方でname属性値を使って取得できなくなってしまい、
document.f.getElementsByTagName("input")みたいな感じで取得することになると思います。

そもそも、name属性値に"["や"]"を使うことは良くないと思うので、
phpの方で何らかの方法があると思ったのですが、
最近勉強を始めたばかりの初心者なのでよくわかりませんでした。

今知っているphpに配列で渡す方法が、
「name属性値をgroup1[]のように配列にする」しか無いので、
他に方法があるならば教えてください。


質問の前提として、
1.name属性はフォーム内の項目のグループ化をしている?
2.name属性値に"["や"]"は仕様では使用可能な文字ではない?
1,2ともにYesだと思っています。
もし、この前提が間違っていたらご指摘ください。

質問内容を要約すると、
「checkboxをphpで配列で取得する方法はname属性値を配列にするしかないのですか?」
「他に方法があるなら教えてください」
です。
よろしくお願いします。

A 回答 (1件)

JavaScript でも form.elements('group1[]') で取得できまっせ。



DOMScript では、elements から取得するのが書くのが正しい書き方です。


1.name属性はフォーム内の項目のグループ化をしている?
JavaScript では、name や id が重複した場合(本来ありえない)配列として返してくれる。

2.name属性値に"["や"]"は仕様では使用可能な文字ではない?
確かに仕様では、そうなってますね。
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401 …
    • good
    • 1
この回答へのお礼

form.elements('group[]')で取得出来るのを忘れてました!
ありがとうございます。

お礼日時:2013/02/25 09:21

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