\r\n```","answerCount":1,"upvoteCount":0,"datePublished":"2018-02-13T02:05:17.639Z","dateModified":"2018-02-13T02:25:28.925Z","acceptedAnswer":{"@type":"Answer","text":"> 遷移後も同じセレクトボックスが設置されています\r\n\r\nという前提で、考え方は2つ\r\n- 遷移後のページはそれぞれ違うのですからスタティックに自分自身のページにselectedを付けておく\r\n(サーバーサイドのプログラムで処理)\r\n- javascriptでlocation.hrefの値をみてその値とセレクトボックスの値が合致するものにselectedを移す\r\n\r\nただし後者の場合、セレクトボックスの移動がchangeイベントが発火すると永久ループになる可能性があります。\r\nできれば前者で、そうでないなら自分自身と同じvalueを一度空(\"\")してから移動するとよいでしょう\r\n\r\n# 追記\r\nサーバーサイドでselectedを付加する\r\n\r\n```PHP\r\n$selected=[\"/url/1\"=>\"\",\"/url/2\"=>\"\",\"/url/3\"=>\"\"];\r\n$selected[$_SERVER[\"SCRIPT_NAME\"]]=\" selected\";\r\nprint <<\r\n\r\n\r\n\r\n\r\neof;\r\n```\r\nのようにするのが基本、laravelに適用するのはちょっとわかりません。","dateModified":"2018-02-13T02:52:27.326Z","datePublished":"2018-02-13T02:30:18.229Z","upvoteCount":0,"url":"https://teratail.com/questions/113237#reply-172401"},"suggestedAnswer":[],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/jQuery","name":"jQueryに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/113237","name":"セレクトボックス選択でページ遷移して、遷移ごのページに選択したoptionを引き継ぎたい"}}]}}}
質問するログイン新規登録

Q&A

解決済

1回答

8608閲覧

セレクトボックス選択でページ遷移して、遷移ごのページに選択したoptionを引き継ぎたい

takesu

総合スコア14

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/02/13 02:05

編集2018/02/13 02:25

0

0

セレクトボックスで内容を選択すると、valueの値のページに遷移するところまではできましたが、遷移後に選択したセレクトボックスが表示されているようにしたいです。
選択2を選択してページ遷移→セレクトボックスに選択2が選択されている状態。

html

1<select class="select" name="" id="select"> 2<option value="/url/1">選択1</option> 3<option value="/url/2">選択2</option> 4<option value="/url/3">選択3</option> 5</select>

javascript

1<script> 2 $(function() { 3 // select変更時 4 $('#select').on('change', function() { 5 // 遷移先URL取得 6 var url = $(this).val(); 7 // URLが取得できていればページ遷移 8 if(url != '') { 9 location.href = url; 10 } 11 }) 12}); 13</script>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2018/02/13 02:09

「ページ遷移」しているのでしたら「セレクトボックスに選択2が選択されている状態」はありえませんが、これは遷移したページから戻った時にという意味ですか?それとも別windowで開くのでしょうか?
takesu

2018/02/13 02:19

ご指摘ありがとうございます。希望はページ遷移して(URL変更して)セレクトボックスが選択したものになるという挙動なのですが、これは不可能でしょうか。
yambejp

2018/02/13 02:23

遷移したあとに遷移前のページは確認しようがないのでは?遷移後のページにも同じセレクトボックスが設置されているという意味でしょうか?
takesu

2018/02/13 02:24 編集

説明不足で申し訳ありません。遷移後も同じセレクトボックスが設置されています。セレクトボックスでジャンルを選択すると、ページ遷移してジャンル内容が切り替わるという実装です。
guest

回答1

0

ベストアンサー

遷移後も同じセレクトボックスが設置されています

という前提で、考え方は2つ

  • 遷移後のページはそれぞれ違うのですからスタティックに自分自身のページにselectedを付けておく
    (サーバーサイドのプログラムで処理)
  • javascriptでlocation.hrefの値をみてその値とセレクトボックスの値が合致するものにselectedを移す

ただし後者の場合、セレクトボックスの移動がchangeイベントが発火すると永久ループになる可能性があります。
できれば前者で、そうでないなら自分自身と同じvalueを一度空("")してから移動するとよいでしょう

追記

サーバーサイドでselectedを付加する

PHP

1$selected=["/url/1"=>"","/url/2"=>"","/url/3"=>""]; 2$selected[$_SERVER["SCRIPT_NAME"]]=" selected"; 3print <<<eof 4<select class="select" name="" id="select"> 5<option value="/url/1"{$selected["/url/1"]}>選択1</option> 6<option value="/url/2"{$selected["/url/2"]}>選択2</option> 7<option value="/url/3"{$selected["/url/3"]}>選択3</option> 8</select> 9eof;

のようにするのが基本、laravelに適用するのはちょっとわかりません。

投稿2018/02/13 02:30

編集2018/02/13 02:52
yambejp

総合スコア118171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takesu

2018/02/13 02:41 編集

ありがとうございます。 サーバーサイドもこちらで行わなくてはならないのですが、phpをどのように記述すればいいでしょうか・・・ Laravel5.5を使用しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問