您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關laravel框架select2多選插件如何初始化默認選中項,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
具體如下:
項目中有發送消息功能,需要能通過搜索,多選用戶,來指定發送人。使用 select2 插件來完成。
select2 的 html 代碼如下:
<div class="form-group" id="member_group"> <label class="col-lg-3 control-label required">選擇用戶 <span class="required">*</span> </label> <div class="col-lg-4"> <select class="form-control" name="user_id[]" id="member_select" multiple="multiple"></select> </div> </div>
select2 的 js 代碼如下:
//選擇用戶 $("#member_select").select2({ ajax: { //請求的URL url: "{{ route('member.index') }}", //返回的數據類型 dataType: "json", //延遲時間,毫秒 delay: 500, //是否緩存 cache: true, //查詢數據 data: function (params) { //params.term就是你搜索輸入的參數 return { search: params.term, page: params.page || 1 }; }, //請求結果回調函數,data就是后端返回的數據 processResults: function (data, params) { var data = data.data; var results = []; //循環數據,將數據壓入results中 //注意數據必須要有二個屬性,id和text,分別對應option的value和文本 //網上有些說無法選中元素,請先檢查這里,你是否設置了id,并且不為空 $(data.data).each(function (i, obj) { results.push({ id: obj.id, text: obj.name }); }); return { results: results, pagination: { more: (data.current_page * data.per_page) < data.total } }; } }, placeholder: '選擇用戶', //是否多選 multiple: true, allowClear: true });
后端返回的數據如下,直接使用 laravel 的 paginate() 方法 返回分頁數據。
{ "status_code":200, "message":"查詢成功", "data":{ "current_page":1, "data":[ { "id":2006, "name":"用戶1" }, { "id":2005, "name":"用戶3" }, { "id":2004, "name":"用戶3" } ], "first_page_url":"http://test.me/member/index?page=1", "from":1, "last_page":1, "last_page_url":"http://test.me/member/index?page=1", "next_page_url":"http://test.me/member/index?page=1", "path":"http://test.me/member/index", "per_page":1, "prev_page_url":null, "to":null, "total":3 } }
在編輯消息時,我們需要查看,這條消息發送給了哪些人,這就需要進入編輯頁面時,讓 select2 默認選中用戶。
網上說通過如下方法可以選中。
$("#spread_select").val([1, 2]).trigger("change");
但是我們這里select2的option是通過ajax動態加載的,剛進頁面時,select2的ajax根本沒有觸發,導致select2中沒有option元素,更無法被選中。
我們通過下面的方式,來實現默認選中。
var selObj = [ {"id": 1, "name": "小徐"}, {"id": 2, "name": "小張"}, {"id": 3, "name": "小明"}, ]; (function initSel(selObj) { if (selObj) { for (var ix = 0; ix < selObj.length; ix++) { var item = selObj[ix]; var option = new Option(item.name, item.id, true, true); $("#member_select").append(option); } $("#member_select").trigger('change'); } })(selObj);
selObj中的數據,可以通過PHP后端生成好后,渲染到頁面,然后通過JSON.parse()解析成JSON對象。
關于“laravel框架select2多選插件如何初始化默認選中項”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。