您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)laravel框架select2多選插件如何初始化默認(rèn)選中項(xiàng),小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
具體如下:
項(xiàng)目中有發(fā)送消息功能,需要能通過(guò)搜索,多選用戶,來(lái)指定發(fā)送人。使用 select2 插件來(lái)完成。
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: { //請(qǐng)求的URL url: "{{ route('member.index') }}", //返回的數(shù)據(jù)類型 dataType: "json", //延遲時(shí)間,毫秒 delay: 500, //是否緩存 cache: true, //查詢數(shù)據(jù) data: function (params) { //params.term就是你搜索輸入的參數(shù) return { search: params.term, page: params.page || 1 }; }, //請(qǐng)求結(jié)果回調(diào)函數(shù),data就是后端返回的數(shù)據(jù) processResults: function (data, params) { var data = data.data; var results = []; //循環(huán)數(shù)據(jù),將數(shù)據(jù)壓入results中 //注意數(shù)據(jù)必須要有二個(gè)屬性,id和text,分別對(duì)應(yīng)option的value和文本 //網(wǎng)上有些說(shuō)無(wú)法選中元素,請(qǐng)先檢查這里,你是否設(shè)置了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 });
后端返回的數(shù)據(jù)如下,直接使用 laravel 的 paginate() 方法 返回分頁(yè)數(shù)據(jù)。
{ "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 } }
在編輯消息時(shí),我們需要查看,這條消息發(fā)送給了哪些人,這就需要進(jìn)入編輯頁(yè)面時(shí),讓 select2 默認(rèn)選中用戶。
網(wǎng)上說(shuō)通過(guò)如下方法可以選中。
$("#spread_select").val([1, 2]).trigger("change");
但是我們這里select2的option是通過(guò)ajax動(dòng)態(tài)加載的,剛進(jìn)頁(yè)面時(shí),select2的ajax根本沒有觸發(fā),導(dǎo)致select2中沒有option元素,更無(wú)法被選中。
我們通過(guò)下面的方式,來(lái)實(shí)現(xiàn)默認(rèn)選中。
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中的數(shù)據(jù),可以通過(guò)PHP后端生成好后,渲染到頁(yè)面,然后通過(guò)JSON.parse()解析成JSON對(duì)象。
關(guān)于“l(fā)aravel框架select2多選插件如何初始化默認(rèn)選中項(xiàng)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。