質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

10999閲覧

【laravel】セレクトボックスの値を保持する方法について

退会済みユーザー

退会済みユーザー

総合スコア0

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/12/26 04:55

編集2017/12/26 12:57

##わからないこと
いつもお世話になっております。
この度検索後に、セレクトボックスの値を保持したままの処理を書こうとしているのですが、うまくいっておりません。

option内で「selected」の条件を分岐させているのですが、おそらくindexが誤っているものと思われます。
ご教授いただければ幸いです。

※以前の質問と連動関係にあります。
https://teratail.com/questions/106048

<div> <select name="jtype0" class="form-control input-sm inner-shadow js-parent-select" tabindex="1" data-target="#mobile-jtypeDetail" data-children="{{json_encode($item['jtype'], JSON_UNESCAPED_UNICODE)}}"> <option value="">職種</option> @foreach ($item['jtype'] as $jtype) <option value="{{$jtype['id']}}"{{isset($item['value']['jtype0']) && $item['value']['jtype0'] === $jtype['id'] ? ' selected' : ''}}>{{$jtype['name']}}</option> @endforeach </select> </div> <div> <select class="form-control input-sm inner-shadow" tabindex="1" id="mobile-jtypeDetail" name="jtype1" title="詳細職種"> <option value="">詳細職種</option> @if (isset($item['value']['jtype0']) && isset($item['jtype'][$item['value']['jtype0']])) @foreach ($item['jtype'][$jtype['id']]['children'] as $jDetail) <option value="{{$jDetail['id']}}"{{isset($item['value']['jtype']) && $item['value']['jtype'] === $jDetail['id'] ? ' selected' : ''}}>{{$jDetail['name']}}</option> @endforeach @endif </select> </div>
$(".js-parent-select").change(function(){ var $select = $($(this).attr("data-target")).empty(); $select.append('<option value="">'+$select.attr("title")+'</option>'); var children = JSON.parse($(this).attr("data-children"))[$(this).val()]; if (children) { for (var i = 0; i < children.length; i++) { $select.append($('<option value="'+children[i].id+'">').text(children[i].name)); } } });
@php $jtype = <<<EOS { "48": { "id": 48, "name": "介護", "children": [{ "id": 439, "name": "ヘルパー", "checked": false }, { "id": 440, "name": "介護士", "checked": false }, { "id": 441, "name": "マネジャー", "checked": false }, { "id": 442, "name": "生活相談", "checked": false } ] }, "49": { "id": 49, "name": "会計事務", "children": [{ "id": 448, "name": "スタッフ", "checked": false }, { "id": 449, "name": "内勤のみ", "checked": false }, { "id": 450, "name": "巡回有り", "checked": false }, { "id": 451, "name": "税理士", "checked": false } ] }, "51": { "id": 51, "name": "調理", "children": [{ "id": 459, "name": "調理師", "checked": false }, { "id": 460, "name": "栄養士", "checked": false }, { "id": 461, "name": "調理補助", "checked": false } ] }, "52": { "id": 52, "name": "その他", "children": [{ "id": 2120, "name": "管理", "checked": false }, { "id": 527, "name": "一般事務", "checked": false }, { "id": 530, "name": "営業", "checked": false }, { "id": 463, "name": "技術者", "checked": false } ] } } EOS; //JSON文字列から連想配列に変換 $item['jtype'] = json_decode($jtype, true); @endphp

##追記
php側でredirect処理を噛んでおり、可能であればその際にフォームのパラメータを載せたいのですが、それはどのように行えばよいでしょうか?
できればURLには見えない形で行いたいです

何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

php

1$data = [['name'=>'リンゴ','chk'=>0], 2 ['name'=>'バナナ','chk'=>1], 3 ['name'=>'オレンジ','chk'=>0]];

html

1<!DOCTYPE html> 2<html> 3<head> 4<title>sample</title> 5<meta charset="utf-8"> 6</head> 7<body> 8<select> 9 @foreach($data as $value) 10 <option {{isset($value['chk']) && $value['chk'] == 1 ? 'selected':''}}>{{$value['name']}}</option> 11 @endforeach 12</select> 13</body> 14</html>

データの持ち方は少し違うかもしれませんが、三項演算子を使ったやり方ならこんな感じになります。質問者さんの場合は、ちゃんとデータ自体は保持できているようなので単純に三項演算子の条件に当てはまってない可能性がありますね。「===」を「==」にすれば引っかかるとかあるかもしれません。

redirect処理でデータを持ち運びしたい場合は、一度sessionに格納してそれを取り出す形で実現できます。

route

1route 2Route::get('/index', 'TestController@index'); 3Route::post('/processing', 'TestController@processing');

php

1TestController 2 3//view 4public function index() 5{ 6 if($request->session()->has('data') == true) 7 { 8 $data = $request->session()->get('data'); 9 $request->session()->forget('data'); 10 } 11} 12 13public function processing() 14{ 15 $data = 'test'; 16 $request->session()->put('data',$data); 17 return redirect('/index'); 18} 19

投稿2017/12/26 05:23

編集2017/12/27 00:46
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2017/12/26 05:48

ご回答ありがとうございます。 ただ申し訳ございませんが、選択した値を保持し、かつ変数のみを使用した「selected」の条件分岐を行いたいと考えております。 初心者で申し訳ございません。
退会済みユーザー

退会済みユーザー

2017/12/26 05:59

変数のみを使用した条件分岐とはどういう意味でしょうか?
退会済みユーザー

退会済みユーザー

2017/12/26 06:04

選択した値を取得して、その値に合致するoptionをselectedの状態にするといったことはどのように記述すればいいでしょうか?
退会済みユーザー

退会済みユーザー

2017/12/26 06:15

質問文のソースで言うと、職種を選択したらそれに合わせて詳細職種が切り替わるようなイメージですかね?
退会済みユーザー

退会済みユーザー

2017/12/26 06:19

仰る通りです。 その機能に加えてセレクトした値を保持させようとしています
退会済みユーザー

退会済みユーザー

2017/12/26 06:22

セレクトした値を保持というのは具体的にどういう意味ですか?
退会済みユーザー

退会済みユーザー

2017/12/26 06:24

検索の際にoptionを選択するのですが、そのoptionのvalueを保持させたいのです
退会済みユーザー

退会済みユーザー

2017/12/26 06:36

どこに保持したいのかがよくわからないですね。単純にformで送信するときに、そのoptionのvalueも一緒に送信するのではだめなのですか?
退会済みユーザー

退会済みユーザー

2017/12/26 06:56

とりあえずselectの連動切り替えを作ってみたのでコード更新しておきます。
退会済みユーザー

退会済みユーザー

2017/12/26 07:38

失礼いたしました。 連動する切替はできているのですが、検索後のvalueの保持ができておりません。 phpを経由しても問題は有りません。
退会済みユーザー

退会済みユーザー

2017/12/26 07:55 編集

本来の検索後の流れはどういった感じなのでしょうか?PHPは経由していないのですか?
退会済みユーザー

退会済みユーザー

2017/12/26 08:07

いえPHPは通っております。 検索した値をphpに渡して結果を出力しています。
退会済みユーザー

退会済みユーザー

2017/12/26 08:18

んーもしかしてもうvalue保持自体はできていて、それをもとにselectedをつけようとしているけど上手くいってないってことですかね?
退会済みユーザー

退会済みユーザー

2017/12/26 09:22

URLに添付してありますので、value自体はとれてあります
退会済みユーザー

退会済みユーザー

2017/12/26 09:28

回答更新してみました。
退会済みユーザー

退会済みユーザー

2017/12/26 09:55

恐れ入ります。 ご回答ありがとうございます。 大変申し訳ございませんが、selectedの前のスペースを消しても選択状態は保持されませんでした。
退会済みユーザー

退会済みユーザー

2017/12/27 00:47

返信遅くなりました!再度回答更新したので確認してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問