在編輯資料時,我的 select2 有一個小問題,select2 不會選擇該值 這是我的數據顯示表數據
當我單擊“編輯資料”按鈕時,它應該在父值上選擇“設定”,但它不起作用,請參閱此
模態腳本
#<div class="modal fade" id="modal-edit" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title mt-0">Edit Data Navigation</h5> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> </div> <div class="modal-body"> <input type="hidden" id="token" value="{{ csrf_token() }}"> <input type="hidden" id="nav_id"> <div class="form-group"> <label>Nama Menu</label> <input type="text" name="name" class="form-control name" id="name" placeholder="Type something" /> <div class="alert alert-danger mt-2 d-none" role="alert" id="alert-name"></div> </div> <div class="form-group"> <label>URL</label> <input type="text" name="url" class="form-control url" id="url" placeholder="Type something" /> <div class="alert alert-danger mt-2 d-none" role="alert" id="alert-url"></div> </div> <div class="form-group"> <label>Icon</label> <input type="text" name="icon" class="form-control icon" id="icon" placeholder="Type something" /> <div class="alert alert-danger mt-2 d-none" role="alert" id="alert-icon"></div> </div> <div class="form-group"> <label>Parent</label> <select id="parent_id" class="form-control parent_id"> <option value=""></option> </select> <div class="alert alert-danger mt-2 d-none" role="alert" id="alert-parent"></div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">TUTUP</button> <button type="button" class="btn btn-primary" id="update">SIMPAN</button> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog -->
這是我的ajax腳本
Ajax 腳本
#// select2 data parents $(document).ready(function() { var _token = $('meta[name="csrf-token"]').attr('content'); var parentSelect = $('.parent_id'); $(".parent_id").select2({ dropdownParent: $('#modal-edit'), placeholder: 'Choose Parent', ajax: { url: "{{ route('getNavigations') }}", type: "get", dataType: 'json', delay: 250, data: function(params) { return { token: _token, search: params.term // search term }; }, processResults: function(response) { return { results: response }; }, cache: true } }); });
點擊編輯按鈕時獲取資料我通常使用觸發器來設定 select2 的選定值,但它不起作用
取得資料
$('body').on('click', '#btn-edit-post', function() { var nav_id = $(this).data('id'); //fetch detail post with ajax $.ajax({ url: `navigations/${nav_id}`, type: "GET", cache: false, success: function(response) { // console.log(response); //fill data to form $('#nav_id').val(response.data.id); $('.name').val(response.data.name); $('.url').val(response.data.url); $('.icon').val(response.data.icon); $('.parent_id').val(response.data.parent_id).trigger('change'); //open modal $('#modal-edit').modal('show'); } }); });
這是我的控制器
控制器
public function getNavigations(Request $request) { $search = $request->search; if ($search == '') { $navigation = Navigation::orderby('name', 'asc')->select('id', 'name', 'parent_id')->where('parent_id')->limit(5)->get(); } else { $navigation = Navigation::orderby('name', 'asc')->select('id', 'name', 'parent_id')->where('name', 'like', '%' . $search . '%')->limit(5)->get(); } // create respons $response = array(); foreach ($navigation as $parent) { $response[] = array( "id" => $parent->id, "text" => $parent->name, ); } // dd($response); return response()->json($response); }
資料顯示但未選中,應該是這樣的
我不知道我寫程式碼的方式是否正確,我是程式碼新手,所以請幫我:)
所以我找到了我創建的程式碼的解決方案。我在控制器和我的JavaScript腳本中添加了一些程式碼。以下是我添加的程式碼:
在控制器中,為了獲取數據,我添加了以下程式碼:
這是程式碼的完成部分 點擊這裡查看
至於JavaScript,我對select2的回傳值進行了一些更改,如下所示:
這是程式碼的完成部分 點擊這裡查看