2017-01-23 60 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

相关问题