2017-01-23 130 views
0

我使用wenzhixin/multiple-select,因爲它有選擇所有選項。我試圖在創建帖子時選中勾選的項目。從多重選擇jQuery插件Laravel中獲取選定值

這就是我所做的,但它不起作用。

{{ Form::label('tags', 'Tags:') }} 
<select name="tags[]" multiple="multiple" id="tags"> 
    @foreach($tags as $tag) 
     <option value="{{$tag->id}}">{{$tag->name}}</option> 
    @endforeach 
</select> 

<script> 
    $("#tags").multipleSelect({ 
     placeholder: "Tags please" 
    }); 
    $('#tags').multipleSelect().val({!!json_encode($post->tags()->getRelatedIds())!!}).trigger('change'); 
</script> 

我會thakful如果有人能幫助我。

+0

[在Laravel中從多選表單中獲取選定值]的可能副本(http://stackoverflow.com/questions/15358227/getting-selected-values-from-a-multiple-select-form-in-laravel ) –

+0

我想你應該使用類似'$('#tags')。multipleSelect('setSelects',[1,3]);'而不是'$('#tags')。multipleSelect()。val() ' –

+0

@GilleQ。你鏈接的線程沒有使用jquery插件。 –

回答

0

在一天結束時,它只是一個HTML選擇元素。鑑於tags[]的名稱,這將表單內提交併且可以訪問通過控制器$request->get('tags')或者如果使用的幫手,那麼request()->get('tags');

此外,還可以通過選擇的項目到下一個頁面中這樣說:

public function myFunctionToHandleTheForm() 
{ 
    $tags = App\Tag::all(); //for example, no idea what you use 
    $selectedTags = request()->get('tags'); 

    return view('my.view', compact('selectedTags', 'tags'); 
} 

現在,$tags將是一個數字順序排列(升序),其中包含從表單提交的ID's。您可以設置進行了檢查,只是這樣的默認值:

{{ Form::label('tags', 'Tags:') }} 
<select name="tags[]" multiple="multiple" id="tags"> 
    @foreach($tags as $tag) 
     <option value="{{$tag->id}}" {{ in_array($tag->id, $selectedTags) ? 'selected="selected"' : null }}>{{$tag->name}}</option> 
    @endforeach 
</select> 

在上面,我們檢查,如果標籤ID是在selected tag id's列表,如果是這樣,我們設置selected屬性。你的插件會理解這一點,並正確翻譯它。

+0

感謝您的建議。您的代碼只顯示選定的標籤。我想要顯示所有標籤並僅勾選選定的標籤。如果incase用戶想要用戶想要更改帖子的標籤。 –

+0

以前我使用select2 jquery插件handeling標籤。上面提到的代碼與它完美協作。我切換到多選,因爲它已選擇所有選項。 –

+0

@ZacharyDale我的代碼完全符合你的狀態。它循環「所有標籤」,並選擇「只有先前選擇的標籤」。這留下*未選中*未選中的那些*。 – Ohgodwhy