【问题标题】:Getting selected values from multiselect in Laravel with multiple-select jquery plugin使用多选 jquery 插件从 Laravel 中的多选中获取选定的值
【发布时间】:2017-01-23 22:43:43
【问题描述】:

我正在使用wenzhixin/multiple-select,因为它具有全选选项。我正在尝试勾选创建帖子时选择的选定项目。

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

{{ 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>

如果有人可以帮助我,我会很感激。

【问题讨论】:

标签: javascript php jquery laravel laravel-5.3


【解决方案1】:

归根结底,它只是一个 HTML 选择元素。给定 tags[] 的名称,这将在表单中提交,并且可以通过控制器作为 $request-&gt;get('tags') 访问,或者如果使用帮助程序,则 request()-&gt;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 属性。您的插件会理解并正确翻译。

【讨论】:

  • 感谢您的建议。您的代码仅显示选定的标签。我希望显示所有标签并仅勾选选定的标签。如果用户想要用户想要更改帖子的标签。
  • 以前我使用 select2 jquery 插件来处理标签。上面提到的代码与它完美配合。我切换到多选,因为它有全选选项。
  • @ZacharyDale 我的代码完全按照您的说法。它循环all tags 并选择only the ones that were previously selected。这会留下那些被选中的未选中
猜你喜欢
  • 2013-02-27
  • 2011-11-26
  • 1970-01-01
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 1970-01-01
相关资源
最近更新 更多