input type="hidden"で送る値を、セレクトした内容に応じて動的に変えるにはどうしたらよいでしょうか?

このQ&Aのポイント
  • フォームの選択肢に応じて動的に値を変える方法について教えてください。
  • 現在の書き方だと、選択肢の一部を送信できません。
  • 解決策として、フォームを使わずにデータをAPIから取得する方法もありますが、このフォームで処理したい場合はどうすれば良いでしょうか?
回答を見る
  • ベストアンサー

input type="hidden"で送る値を、セレクトした内容に応

input type="hidden"で送る値を、セレクトした内容に応じて動的に変えるにはどうしたらよいでしょうか? ▽現状 <form action="search.php" method="get"> キーワード:<input type="text" name="keyword"> <select name="genreid"> <option value="0">すべての商品</option> <?php foreach ($genres as $hit) { ?> <option value="<?php echo ($hit->genreId); ?>"> <?php echo ($hit->genreName); ?> </option> <?php } ?> </select> <input type="hidden" name="genrename" value="<?php echo ($genres->genreName); ?>"> ▽問題点 この書き方だと、<option value="0">を選択した際、「すべての商品」という文字列が送れません。 <option value="0">を選択した際は「すべての商品」を、 それ以外を選択した場合は、<?php echo ($genres->genreName); ?>を送りたいのですが、どう書けばよいでしょうか? 最終的には、遷移先で、$genrename=$_GET["genrename"];で利用する予定です。 ▽その他 http://okwave.jp/qa/q6215844.htmlで回答いただいた内容で、解決したつもりだったのですが、新たな疑問が出てきたので、質問しました。上記でアドバイスいただいた、フォームを使わないやり方については、データをAPIから取得していること等もあり、どうやって処理してよいか分からないため、できればこのフォームでやりたいと考えてます…。

  • re999
  • お礼率61% (476/777)
  • PHP
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

<option value="0">すべての商品</option> であなく <option>すべての商品</option> こうすれば 「0」のかわりに「すべての商品」が送信されるようになるわよ。 両方送りたいなら <option value="0:すべての商品">すべての商品</option> こうしてあげてPHPで分解してあげるのも一つの手よ。 どうしてもhiddenに格納して送りたいならJavaScriptでhiddenのvalueを書き換えるしかないわね。

re999
質問者

お礼

回答ありがとうございました。 submitした時点で、option valueの値も利用するので(APIへ投げる)、 「hiddenのvalueを書き換える方法」を試してみたいと思います。 JavaScriptなので、そちらの方で聞いてみます。 http://oshiete.goo.ne.jp/qa/6217505.html

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>「すべての商品」という文字列が送れません。 本末転倒していませんか? サーバーからoptionのvalueをクライアントに渡しているわけですから サーバー側はvalue=0のときは「すべての商品」を示すことは最初からわかっているわけです。 なので、「すべての商品」なんて文字列を無駄に送る必要はありません。

re999
質問者

お礼

アドバイスありがとうございます。 >サーバー側はvalue=0のときは「すべての商品」を示すことは最初からわかっているわけです。 遷移先へ渡して、画面に表示させたり、ページタイトルとして利用したいと考えています。 もしかしたら、サーバー側から取得したら? といった主旨のアドバイスをいただいているのかもしれませんが、そのやり方が分からないので、hiddenで渡したいと思ってます。

関連するQ&A

  • select値をhiddenのvalueに渡したい

    selectで選択されたvalue値を下のhiddenのvalue値(id)に渡して、 hiddenのvalue値(id)がselectで選択されたvalue値になるような フォームを作りたいのですが、作り方をお教え頂ければ幸いです。 <form name="form" method="get" action="index.cgi"> <select name="mode"> <option value="100023">和書</option> <option value="100241">洋書</option> <option value="100524">エレクトロニクス</option> </select> <input type="hidden" name="serch_janru" value="id" /> <input type="text" name="keyword" value="keyword" /><input type="submit" name="submit" value="商品を検索" /> </form> ソース等、具体的にお教え頂けると助かります。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • HTML
  • プルダウンから、遷移先のurlに、&genrename=○○と追加付与

    プルダウンから、遷移先のurlに、&genrename=○○と追加付与したいのですが、うまくいきません。 ▽現状 <form action="search.php" method="get"> キーワード:<input type="text" name="keyword" size="40"> <select id="genreid" name="genreid"> <option value="0">すべての商品</option> <?php foreach ($hits as $hit) { ?> <option value="<?php echo ($hit->genreId); ?>"> <?php echo ($hit->genreName); ?> </option> <?php } ?> <input type="submit" value="検索"> </select> </form> ▽新たに追加して飛ばしたい内容 <?php echo ($hit->genreName); ?>の部分 ▽試したこと <input type="hidden" name="genrename" value="<?php ($hit->genreName); ?>"> とやると、&genrename=○○と追加付与されたのですが、文字がエンコードされたような状態になりました。 そこで、お伺いしたいのですが、 ・プルダウンから、遷移先のurlに、&genrename=○○と追加付与する場合は、input type="hidden"でよいのでしょうか?(option valueの値送信は必要なので、それに追加して、という意味です) ・input type="hidden"で送信すると、勝手に何かに変換されるのでしょうか? ・最終的に、$genrename=$_GET["genrename"];という形で取り込みたいのですが、きちんと日本語表示させるにはどうしたらよいのでしょうか?

    • ベストアンサー
    • PHP
  • <input>の選択肢をプルダウンメニューから受け取り、hiddenで

    <input>の選択肢をプルダウンメニューから受け取り、hiddenで渡したいのですが、どうすればよいでしょうか? ▽プルダウン例 <FORM> <SELECT> <OPTION SELECTED>SELECT</OPTION> <OPTION VALUE="1">A</OPTION> <OPTION VALUE="2">B</OPTION> <OPTION VALUE="3">C</OPTION> </SELECT> </FORM> ↑上で選択した値(A or B or C)値を、↓下のvalue=「"hoge"」に渡したいです。 ※選択肢は3つだけではなくて、たくさんあります。 ▽input例 <input name="hosted_button_id" value="hoge" type="hidden"> http://okwave.jp/qa/q6016233.htmlの質問内容が知りたいことに近かったのですが、value値ではなくて、選択した内容そのものをhiddenへ渡す方法を教えてください。

  • selectでinputの表示を変えたい

    セレクトを選択した時に、inputの一部をdisabledにし、同時にinputの背景色を変更したいと思っています。 ----------------------------------------------------------------------- 現在はこんな感じです。 function menuLink(linkLoc) { if(linkLoc !="") { ifrm.location.href=linkLoc;} } --- セレクト1 <SELECT style="WIDTH: 130px" onchange="menuLink(this.options[this.selectedIndex].value)"> <OPTION value="11.html">1</OPTION> <OPTION value="22.html">2</OPTION> <OPTION value="33.html">3</OPTION> セレクト2 <SELECT style="WIDTH: 130px" onchange="menuLink(this.options[this.selectedIndex].value)"> <OPTION value="44.html">1</OPTION> <OPTION value="55.html">2</OPTION> <OPTION value="66.html">3</OPTION> セレクト3 <SELECT style="WIDTH: 130px" onchange="menuLink(this.options[this.selectedIndex].value)"> <OPTION value="77.html">1</OPTION> <OPTION value="88.html">2</OPTION> <OPTION value="99.html">3</OPTION> (実際にはもっと多くのセレクトがあります) <TR> <TD><INPUT type="text" name="aa" size="10" maxlength="2"></TD> <TD><INPUT type="text" name="ba" size="10" maxlength="2"></TD> <TD><INPUT type="text" name="ca" size="10" maxlength="2"></TD></TR> <TR> <TD><INPUT type="text" name="ab" size="10" maxlength="2"></TD> <TD><INPUT type="text" name="bb" size="10" maxlength="2"></TD> <TD><INPUT type="text" name="cb" size="10" maxlength="2"></TD></TR> <TR> <TD><INPUT type="text" name="ac" size="10" maxlength="2"></TD> <TD><INPUT type="text" name="bc" size="10" maxlength="2"></TD> <TD><INPUT type="text" name="cc" size="10" maxlength="2" /></TD></TR> <TR> <TD><INPUT type="text" name=da readOnly value=0 size=10></TD> <TD><INPUT type="text" name=ea readOnly value=0 size=10></TD> <TD><INPUT type="text" name=fa readOnly value=0 size=10></TD></TR> <TR> <TD><INPUT type="text" name=db readOnly value=0 size=10></TD> <TD><INPUT type="text" name=eb readOnly value=0 size=10></TD> <TD><INPUT type="text" name=fb readOnly value=0 size=10></TD></TR> <TR> <TD><INPUT type="text" name=dc readOnly value=0 size=10></TD> <TD><INPUT type="text" name=ec readOnly value=0 size=10></TD> <TD><INPUT type="text" name=fc readOnly value=0 size=10></TD></TR> ----------------------------------------------------------------------- セレクト1のどれかを選択した時に、インプットのaa,ba,da,eaをdisabledにし、同時にaa,ba,da,eaの背景色を変更 セレクト2のどれかを選択した時に、インプットのab,bb,db,ebをdisabledにし、同時にab,bb,db,ebの背景色を変更 という感じにしたいのですが、可能でしょうか? 可能であれば書き方を教えていただけると助かります。 よろしくおねがいします。

  • select onChange= hidden

    おそれいります。 セレクトメニューを選択した際に、自動でsubmitするように、 <select name="xxxx" onChange="this.form.submit()>を使っているのですが、 送信される時にhiddenの情報も同時に送信したいのですが、なかなかうまくいきません。 <input type="hidden" name="ccccc" value="kkkkk">を、select内に入れても外に入れても無理でした。方法お分かりの方がいらっしゃったら、是非御教授いただきたいのですが、宜しくお願いします。

    • ベストアンサー
    • HTML
  • <input type="hidden" >で配列(複数の要素)を渡したいとき?

    こんにちわ, 今HTML+PHPで $hoge[]にいくつかの要素が入っているとき, それをあるfoo.phpというページに渡したいとき, echo '<form action="foo.php" method="POST">'; echo '<input type="hidden" name="$hoge[]" >'; echo '</form>'; としたのですが,うまくいきません。 どうしたらよろしいでしょうか。

    • ベストアンサー
    • PHP
  • hiddenに値を設定する方法

    いつもお世話になります。 selectboxの選ばれている項目の番号、いわゆるselectedIndexをhiddenに設定してsubmitで取得したいのですが、エラーがでてしまいます。 いまいちhiddenの使い方もわかっていないので見当違いな書き方をしているかもしれませんが、 現在の状態を以下に示しますのでご指導よろしくお願いします。 [javascriptの中] function err(){ document.myForm.NaNo.value = myForm.cbName.selectedIndex; } [htmlの中] <body onLoad=err()> <form name="myForm" method="post"> <select name="cbName"> <option value=""><br></option> <option value="花子">花子 <option value="和子">和子 <option value="良子">良子 </select> <input type="hidden" name="NaNo">

  • SELECTの値を保持する

    只今PHPを勉強中の者です。 HTMLのSELECTで選択して送信ボタンを押します。 選択したものがエラーだと、また最初の画面に戻ります。 その時、先ほど選択したOPTIONを最初から表示したいのですが、 可能でしょうか? <SELECT NAME="Month" > <OPTION> <OPTION VALUE="1">1 <OPTION VALUE="2">2 ←例えばこれを選択して送信した場合は、 <OPTION VALUE="3">3  エラーになりまたこの画面に戻る。  <OPTION VALUE="4">4  その時最初から「2」を表示したい。  <OPTION VALUE="5">5 <OPTION VALUE="6">6 <OPTION VALUE="7">7 <OPTION VALUE="8">8 <OPTION VALUE="9">9 <OPTION VALUE="10">10 <OPTION VALUE="11">11 <OPTION VALUE="12">12 </SELECT> <input type="submit" value="送信">

  • inputタグのhiddenの使い分けについて

    <form action="add.php" method="post"> <input type="hidden" name="check_name" value="{$name}"> このhiddenのinputは、ユーザーには情報を見せずに、postでいろんな情報をいっぱい渡したい場合に使われるものなのでしょうか。 また、value="{$name}"のように{}があるのですが、これは変数コンピュータに認識してもらうための決まりごとですよね。しかし、それが無い場合もあったりします。いれるべき場合とそうでない場合の区別はありますか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • selectが複数ある場合の値取得について

    お世話になります HTML内に下記のようなフォームが複数存在しています。 select[name="page_name"]が変更されたときに値を取得しPHP に送信したいのですが、一番上にあるselectの値が取得されてしまいます。 ひとつのscriptで複数のselectに対応したい場合、どのような記述になりますでしょうか? 助けていただきたいです。よろしくお願いします。 <!--1番目のセレクト--> <form method="post" action="javascript:void(0);"> <input type="hidden" id="img_id" name="img_id" value="3"> <select name="page_name"> <option value="">選択してください</option> <option id="page_name" value="1">あああ</option> <option id="page_name" value="2">いいい</option> <option id="page_name" value="3">ううう</option> </select> </form> <!--2番目のセレクト--> <form method="post" action="javascript:void(0);"> <input type="hidden" id="img_id" name="img_id" value="4"> <select name="page_name"> <option value="">選択してください</option> <option id="page_name" value="1">あああ</option> <option id="page_name" value="2">いいい</option> <option id="page_name" value="3">ううう</option> </select> </form> <!--3番目のセレクト--> ---省略--- /*script*/ $('select[name="page_name"]').change(function() { var data = { 'page_name' : $('#page_name').val(), 'img_id' : $('#img_id').val() }; $('#name').text(data['img_id']); $.ajax({ type: "POST", url: "/admin/change/", data:data }); alert("画像使用ページを変更しました!"); return false; }); });

専門家に質問してみよう