Laravel中如何用jQuery获取Form::select多选框的选中参数?
问题解答
1. 你用的$(...).multiselect()方式为什么无效?
这个方法不是jQuery原生方法,它属于第三方多选插件(比如bootstrap-multiselect)的专属方法。你没引入对应的插件文件,所以浏览器会抛出multiselect is not a function的错误,自然无法正常使用。
2. 正确获取多选框选中参数的方法
先确保多选框本身配置正确
用Form::select创建多选框时,必须满足两个关键配置:
name属性要加[],让Laravel能识别为数组参数- 开启
multiple属性,启用多选功能
示例代码:
{!! Form::select('itemStatus[]', $statusOptions, null, [ 'id' => 'itemStatus', 'multiple' => 'multiple', 'class' => 'form-control' ]) !!}
方式一:用jQuery原生方法获取(无需第三方插件)
jQuery原生对多选<select>元素提供了直接获取选中值的能力:
// 直接获取选中值的数组 var selectedStatuses = $('#itemStatus').val(); // 发送POST请求示例 $.post('/your-api-url', { itemStatus: selectedStatuses, _token: '{{ csrf_token() }}' // Laravel必须传CSRF令牌 }, function(res) { // 处理接口响应 });
如果需要获取选中项的文本和值的详细信息,可以遍历选中的option:
var selectedItems = []; $('#itemStatus option:selected').each(function() { selectedItems.push({ value: $(this).val(), text: $(this).text() }); });
方式二:如果要使用multiselect()插件
如果你确实想用这个插件方法,需要先完成插件引入:
- 下载并引入插件的CSS和JS文件(必须在jQuery之后引入)
- 初始化插件:
$(function() { // 初始化multiselect插件 $('#itemStatus').multiselect(); // 获取选中项(插件提供的方法) var selected = $('#itemStatus').multiselect('getSelected'); // 或者依然可以用原生val()方法,多数插件会兼容 });
后端接收参数
在Laravel控制器中,直接通过请求对象获取数组参数:
public function handleRequest(Request $request) { $selectedStatuses = $request->input('itemStatus'); // $selectedStatuses 是一个包含所有选中值的数组 }
内容的提问来源于stack exchange,提问作者mstdmstd
相关产品推荐
相关产品推荐

