- ベストアンサー
複数フィールドの値を一つのVALUEで送信するには?
以下のようなFORMがあったとします。 <form> <!-- 項目A --> ■項目A<br> <input type="radio" name="checkA" value="佐藤" checked="checked" />佐藤 <input type="radio" name="checkA" value="鈴木" />鈴木 <br><br> <!-- 項目B --> ■項目B<br> <input type="radio" name="checkB" value="太郎" checked="checked" />太郎 <input type="radio" name="checkB" value="次郎" />次郎 <br><br> <!-- 項目C --> <input type="hidden" name="checkC" value="checkAの値+checkBの値"> <input type="submit" value="送信" /> </form> 画面上は『A』の項目と『B』の項目が選択できますが、name=checkA、checkBとして別々に値を送信するのではなく、checkCとしてcheckA、checkBの値を一緒にして送信したいのですが、可能でしょうか? 送信の際、checkA、checkBの値は送信されず、また、送信されるcheckCの値は画面上では表示されない、というのが理想です。 作業していて途方にくれてしまいました。詳しい方、どうぞ教えてください。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
がるです。 んっと……… > 使用できるnameの数が決められているFORMを使用しています。 の部分が限りなく奇異には感じられるのですが(正直なところ、初耳です。length(長さ。バイト数と呼称する事もあります)が制限されているケースってのはありえるのですが…)。まぁ環境は人それぞれ状況それぞれってことで。 この状況ですと、可能な手段としてはJavaScriptが考えられます。…ただ、基本的に(最近かなりマシになったとはいえ)業務で使うにはあまり好ましいと考えていないので、不得手なジャンルではあるのですが。 やり口としては、 <form name="data"> <!-- 項目A --> ■項目A<br> <input type="radio" name="checkA" value="佐藤" checked="checked" />佐藤 <input type="radio" name="checkA" value="鈴木" />鈴木 <br><br> <!-- 項目B --> ■項目B<br> <input type="radio" name="checkB" value="太郎" checked="checked" />太郎 <input type="radio" name="checkB" value="次郎" />次郎 <br><br> <input type="submit" value="送信" onClick="適当な関数名" /> </form> <form action="URL" name="send_form"> <input type="hidden" name="checkC" value=""> </form> ってな感じにしておいて。 送信ボタンがクリックされたときのJavaScriptの記述を ・dataという名前のformの各情報を取得&文字列連結 ・連結した情報を、send_formというformのcheckCというObjectのvalueとして設定 ・send_formというformがsubmitされた挙動を行う って感じにしてあげるとよいのかなぁ、と。 まぁ、概ね#2さんがおっしゃってるのと同意見なのですが。 後は、JavaScriptの書き方などを調べていただいて、になるかと思います。
その他の回答 (3)
- asahina02
- ベストアンサー率47% (95/202)
#2です >例となるようなサイトなどありますでしょうか? うぅん すいません。知らないです。 でもそういう質問が来るということはあんまり詳しくないのかな? 参考URLのページを参考にしてみてください。 >>checkAとcheckBのonclickイベントでcheckCに値を設定する >checkCはhiddenでも大丈夫なのでしょうか?その場合、 ><input type="hidden" name="checkC" value="○○○" />の○○○の場所には何を書けばいいのでしょう? checkCはhiddneで良いですね。(だって表示させたくないのでしょう?) valueの値は最初は空かな。checkAとcheckBの値で初期値を設定するのならその値に応じた値を設定しておけばいいかと。
お礼
何度もありがとうございます。 JavaScriptで実現できるということは分かりました。 ネットを巡り、似たようなスクリプトは見つけましたが、複数のラジオボタンにどう対応させればよいか分かりませんでしたので、この質問は一旦打ち切り、Java板でお世話になろうかと思います。 当方初心者ゆえ、色々とご迷惑をおかけしましたが、ご回答ありがとうございました。
- asahina02
- ベストアンサー率47% (95/202)
No1の方と同様、その理由がさっぱり分かりませんが・・・ 一応回答を ・checkAとcheckBはformタグの外に出す ・checkAとcheckBのonclickイベントでcheckCに値を設定する これで一応checkCのみが送信されると思います。
補足
さっそくのご回答ありがとうございます。皆さんの頭を混乱させるような馬鹿げた質問をして、本当に申し訳ありません。 asahina02様のご回答にある方法についてですが、例となるようなサイトなどありますでしょうか? >checkAとcheckBのonclickイベントでcheckCに値を設定する checkCはhiddenでも大丈夫なのでしょうか?その場合、 <input type="hidden" name="checkC" value="○○○" />の○○○の場所には何を書けばいいのでしょう?
- galluda
- ベストアンサー率35% (440/1242)
がると申します。 単純に一つ疑問なのですが「なぜ」そういったことをされたいのでしょうか? 通常、例をそのまま書くのであれば、例えば checkA=佐藤&checkB=次郎 という風にrequestし、それに対して適宜情報をCGI側で取得して処理、という流れになるかと思いますし、大抵の書籍やらWebやらでもそのように解説しているかと思うのですが。 多分こういったご質問をされているということは「何かしら、どうしても通常のrequest方法では困る」理由があるのだと思うのですが。 ちぃと、その理由がもう一つ予想できず、したがって「じゃぁこういう方法が」という提案も難しいのではないかと思います(正直、二桁の年数でWeb関連の仕事をやっている私にして「初耳」な要求なので)。 よろしければ、差し支えない範囲で背景などを教えていただけると、なにかお手伝いできることなどあるかもしれません。
補足
早速のご回答ありがとうございます。 使用できるnameの数が決められているFORMを使用しています。 ですが、その数以上の情報を送信しなければならない状況に陥りました。 name="A"、name="B"、name="C"の3つの値しか受け付けないFORMで、どうにか4つ以上の情報をユーザーに記入させたい。 そこで、素人考えですが、 name="a1"、name="a2"、name="B"、name="C"というフィールドを設けつつも、送信の際にname="a1"とname="a2"の値が合わさってname="A"として送信されればいいのでは?と思ったわけです。
お礼
何度もありがとうございます。FORMに関して詳しい状況をお話ししなかった私の所為で随分と混乱させてしまったようです。本当に申し訳ありません。 JavaScriptを使用すれば実現できるということは分かりました。ネットを巡り、似たようなスクリプトは見つけましたが、複数ラジオボタンの受け渡しが分からず、他力本願ではありますが、この質問は打ち切り、Java板の方に書き込んで、専門の方に助けていただこうと考えております。 今回は、何度もご回答いただき、本当に有り難うございました。大変助かりました。