フォームからGETパラメータの空文字を消去する方法

このQ&Aのポイント
  • フォームからGETで複数のパラメータを送信する際、値が空文字のものを消去する方法について説明します。
  • 例えば、idやnameなどの値が空であれば、URLには表示されず、入力値のあるパラメータのみが表示されます。
  • このようにすることで、URLが見やすくなり、クエリの内容も分かりやすくなります。
回答を見る
  • ベストアンサー

GETパラメータの内、空文字のクエリを消去したい

フォームからGETで複数のパラメータを送信するとき、値が空文字のものを表示しないようにすることは可能でしょうか。 たとえば、次のようなフォームを含むform.phpがあるとします。 -------------- <form action="./result.php" method="get"> <input type="text" name="id" size="40"> <input type="text" name="name" size="40"> <input type="text" name="address" size="40"> <input type="text" name="sex" size="40"> <input type="submit" value="送信"><input type="reset" value="リセット"> </form> -------------- このフォームから、 -------------- id:13 name:佐藤太郎 address:東京都新宿区適当1-2-3 sex:男性 -------------- というデータを送信した場合、送信ボタンを押すと ./result.php?id=13&name=佐藤太郎&address=東京都新宿区適当1-2-3&sex=男性 のページに遷移しますが、 -------------- id: name:佐藤太郎 address: sex:男性 -------------- ですと ./result.php?id=&name=佐藤太郎&address=&sex=男性 になります。 このままですとクエリが読みにくいので、 -------------- id: name:佐藤太郎 address: sex:男性 -------------- の場合は ./result.php?name=佐藤太郎&sex=男性 と入力値のあるものだけを表示してそれ以外は消去したいです。 というのも、例としたform.phpではパラメータは4つでしたが、現在作成しているフォームではパラメータが21あり、空文字のものも含むと、遷移後の画面のURLがとても見にくいのです。 このようにパラメータを見やすくするようなjavascriptのコードを教えてください。 jQueryは1.7を使用しています。どうかよろしくお願いいたします。

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

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

onsubmitで入力チェックを行い、未入力があるときは当該要素をdisabledにする ただし戻るなどしたときにdisabledになったままが気になるなら onloadなどでdisabledをfalseにしてやる必要があるかも

その他の回答 (2)

  • gorusura
  • ベストアンサー率59% (25/42)
回答No.3

直接の回答ではないのですが、21もパラメータがあるのなら、POSTにしてはどうでしょうか。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

A No1様の回答とほとんど同じですが、 onsubmitで入力チェックを行い、スクリプト内でクエリ文字列を作成。 そのまま、スクリプトからリクエストを送信する。 DOMを変更しないので、「戻る」などを気にしなくてもよいかも…

関連するQ&A

  • 1アクションでPOST・GET、両方送信したい

    1つのフォームからボタンをクリックして、 POST・GET送信と、両方飛ばすには、どうすればよいでしょうか? URLに「表示させたいパラメータ」と「表示させたくないパラメータ」 があります。 「表示させたいパラメータ」は、GETで、 「表示させたくないパラメータ」は、POST送信したいのですが、 1つのフォームで、同時に飛ばす方法が分かりません。 <form method =post action=hoge.php>  <input type=text name="piyo" value="piyo">  <input type=hidden name=puyo_id value=puyo>←これだget送信したい  <input type=submit value="送信"> </form>

    • ベストアンサー
    • PHP
  • ホームページビルダーV8のフォーム機能について

    初めて質問させて頂きます。 ビルダーのフォーム機能で作成すると、 <FORM><INPUT size="20" type="text"></FORM> と全てのフォームが区切られてしまいます。 まとめて送信するように、 <form action="samp.html"><input type="text" name="age"></form><form action="samp.html"><input type="text" name="sex"></form> の様に自動的に記述する方法や設定の仕方などはないでしょうか? よろしくお願い致します。

  • formの入れ子の回避方法

    アドバイス下さい。 <form method="post" name="addForm" id="addForm" action="aaa.php"> <input type="text" name="textA" id="textA"> <form method="post" name="uploadFormA" id="uploadFormA" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text1" id="text1"> <input type="file" name="upload_fileA" id="upload_fileA"> <input type="button" value="アップロード"> </form> <form method="post" name="uploadFormB" id="uploadFormB" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text2" id="text2"> <input type="file" name="upload_fileB" id="upload_fileB"> <input type="button" value="アップロード"> </form> <form method="post" name="uploadFormC" id="uploadFormC" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text3" id="text3"> <input type="file" name="upload_fileC" id="upload_fileC"> <input type="button" value="アップロード"> </form> <input type="text" name="textB" id="textB"> <input type="submit" value="送信"> </form> のような、formが入れ子になってしまっているformがあります。 これを回避する方法を教えていただきたいです。 条件としては、 ・見た目はこの順番がいい。 ・javascript、CSS等なんでも良いです。 ・各「アップロード」ボタンで、text1,2,3,4、upload_fileA,B,C,Dを送信、「送信」ボタンでtextA,Bを送信したい。 以上、お願いいたします。

    • ベストアンサー
    • HTML
  • 複数のフォームから送信

    複数のフォームからtextの値を送信したいのですができますか?〒番号を入力して検索ボタンをおすと住所がでてきて最後に登録をしたいです。検索だけのプログラムはできてますがフォームを二つにすると両方のsubmitが登録になります・・・ 一応自分でいろいろためしましたがだめでした。。。 html,php,javascriptです。 二つともだめでした。。。。 rei1.php ------------------------- <html> <body <form method="POST" action="1.php"> お名前:<input type="text" name="name"> <br> <br> <form method="POST" action="yubin.php"> 〒:<input type="text" name="yubin"> <input type="submit" value="検索"> <br> 住所:<input type="text" name="zyu"> <br> </form> メールアドレス:<input type="text" name="email"> <br> <input type="submit" value="登録する"> </form> </body> </html> -------------------------------------- rei2.php -------------------------------------- <html> <head> <script language="javascript"><!-- function send() { document.nform.submit(); document.nform2.submit(); document.nform3.submit(); } //--></script> </head> <body> <form name="nform" method="POST" action="1.php"> お名前:<input type="text" name="name"> <br> </form> <form name="nform2" method="POST" action="yubin.php"> 〒:<input type="text" name="yubin"> <input type="submit" value="検索"> <br> 住所:<input type="text" name="zyu"> <br> </form> <form name="nform3" method="POST" action="1.php"> メールアドレス:<input type="text" name="email"> <br> <input type="submit" value="登録する"> </form> </body> </html> ------------------------------------

  • ブログフォームが表示されない!

    いつも大変お世話になり誠にありがとうございます。 標記の件。 form.htmlだと表示はされます。 しかし、その後のインプットの表示がされません。 index.phpでOKだったのですが、ソースコードが 表示されるようになってしまいました。 index.phpのソースコードは下記です。 どこが間違っているのでしょうか? ご回答のほど宜しくお願い申し上げます。 <?php if( $mode=='input'){ ?> <h2>ブログフォーム</h2> <form action="blog_create.php" method=_POST> <input type="text" name="address" value="" /> <input type="text" name="name" value="ペンネーム"/> <input type="text" name="title" value="タイトル"/> <input type="text" name="name" value="カテゴリー"/>   <textarea name="content" id="content" cols="50" rows="80">ブログ本文</textarea><br> <input type="submit" value="確認画面へ"> </form>

    • ベストアンサー
    • PHP
  • フォームの一部のfileを送信

    上手に出来る方法をアドバイス下さい。 <form method="post" name="uploadForm" id="uploadForm" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text1" id="text1"> <input type="file" name="upload_file" id="upload_file"> <input type="button" value="アップロード"> <input type="text" name="text2" id="text2"> <input type="submit" value="送信"> </form> のようなフォームで「アップロード」が押された場合、"upload_file"だけ送信したいのですが上手い方法があるでしょうか? また、「送信」が押された場合、"upload_file"以外を送信したいです。 「POST先で無視をする」以外でお願いします。

  • フォームから値を受け取る方法について

    例えば <form method="post" name="frm" action="mail.php">名前<input type="text" name="namae"><br> 住所<input type="text" name="jyuusyo"><br> 電話番号<input type="text" name="denwa"><br> 職業<input type="text" name="syokugyou"><br> 年齢<input type="text" name="nenrei"><br> <input type="submit" value="送信"><br> </form> というフォームがあるとして、それをmail.phpで 名前を取得する場合$_POST['namae']と書く以外で フォームの1番目の値を取得するというような書き方はあるのでしょうか? frmのパラメータの数(上記の場合5コ)というのは取得出来るのでしょうか? ご存知の方教えてください。お願いします。

    • ベストアンサー
    • PHP
  • POSTデータのNAME属性をVALUEによって取得する方法

    HTML→PHPのPOSTデータのやりとりについて、 【HTML】 <form name="form1" method="post" action="xxx.php"> <input name="01" type="text" value="1"> <input name="02" type="text" value="0"> <input name="03" type="text" value="0"> <input name="04" type="text" value="1"> <input type="submit" name="Submit" value="送信"> </form> 【xxx.php】 フォームから送信されたデータを使って、「value」が"1"の「name」を拾うのにはどのように書けばいいでしょう? ↓このように取得したいです。 $data[0]="01"; $data[1]="04"; よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでフォームからの送信

    PHPでフォームからデータを送信する方法について教えてください。例えばPHPファイルの中に下の様にフォームを作成して、送信ボタンを2つ作ります。一つのボタンをクリックすると全てのフォームの情報が送信されてしまいますが、独立して送信できるようにはできないのでしょうか。簡単にでもできるかできないかを教えていただけましたら、あとは自分でなんとかがんばりますので、どなたか教えていただけれますと幸いです。宜しくお願いします。 <form action="abc.php" method="post"> AAA:<input type="text" name="simei"> BBB:<input type="password" name="pass"> <input type="submit" value="送信"> </form> <form action="abc.php" method="post"> CCC:<input type="text" name="simei"> DDD:<input type="text" name="pass"> <input type="submit" value="送信"> </form>

    • ベストアンサー
    • PHP
  • HTMLのフォームをPHPで配列で受け取る方法

    Webアプリを作っています。 HTMLのフォーム上で、番号と名前を入力し、 PHPでデータベースに登録する感じになります。 HTMLのフォームから送信されたデータを、PHP側で配列として受け取るには、 どのようにHTMLを書き換えたら良いでしょうか? 説明のために例を挙げます。 sample.htmlには以下のように書いています。 <form action="action.php" method="get"> <input type="number" name="id1"> <input type="text" name="name1"> <input type="number" name="id2"> <input type="text" name="name2"> <input type="submit"> </form> ここで、送信ボタンを押すと、 ブラウザのロケーションバーには /action.php?id1=1&name1=taro&id2=2&name2=jiro このように表示されます。 action.phpは次のように書いています。 <?php print ($_REQUEST['id1']); print ($_REQUEST['name1']); print ($_REQUEST['id2']); print ($_REQUEST['name2']); ?> 出力結果は、 1taro2jiro のようになります。 このあと、PHPでデータベースに登録する処理をしたいのですが、 $_REQUEST['id1'] $_REQUEST['id2'] $_REQUEST['name1']; $_REQUEST['name2']; となっていると、処理が大変なので、 $_REQUEST['id'][0] $_REQUEST['id'][1] $_REQUEST['name'][0] $_REQUEST['name'][1] のように配列として受け取れるようにしたいのです。 sample.htmlを書き換える必要が有ると思うのですが、 どのように書き換えたら良いでしょうか? 教えていただけると幸いです。 どうぞ、よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう