Laravel - 将 Select2 默认设置为 NULL 而不是第一个选项
Posted
技术标签:
【中文标题】Laravel - 将 Select2 默认设置为 NULL 而不是第一个选项【英文标题】:Laravel - Set Select2 Default to NULL rather than First Option 【发布时间】:2018-07-07 17:49:11 【问题描述】:我有一个 Laravel 编辑表单,它利用 Select2 jQuery 扩展和从数据库表中提取的选项。
下面是我指的表单选择字段:
<select id="ship_to" name="ship_to" class="js-example-basic-single2 form-control">
@foreach($cCustomers as $customer)
<option value="$customer->id"
@if ($shipment->ship_to == $customer->id) selected="selected"
@endif
>$customer->customer_name</option>
@endforeach
</select>
现在,一切都很好地弹出,选项在那里,选择框已转换为 Select2 格式。我的问题是,当我从数据库中提取数据时,如果特定列为空,则 select2 会提取第一个选项,而不是允许的空选项(是的,我选择了占位符),清除 select2 框就可以了。
所以我的问题是这样的:
如果我有一条 select 字段为 NULL 的记录,如何让页面自动打开,将 null 值和占位符放在我的 select2 框中,而不是第一个选项?
电流输出:
<select id="ship_to" name="ship_to" class="js-example-basic-single2 form-control select2-hidden-accessible" data-select2-id="ship_to" tabindex="-1" aria-hidden="true">
<option></option>
<option value="164" data-select2-id="387">4G ENTERPRISES</option>
<option value="192">4G ENTERPRISES</option>
<option value="81">5280 PACKAGING</option>
【问题讨论】:
【参考方案1】:来自docs。确保在您的 select2 选项中设置了一个占位符:
$('#ship_to').select2(
placeholder: "Please select a customer"
);
并在<select>
中添加一个空选项(就在@foreach($cCustomers as $customer)
上方:
<option></option>
【讨论】:
是的,正如我在问题中所说,我添加了一个占位符,并且添加了您的建议,但和以前一样,它仍然是第一个获取 data-select2-id 标志的 @foreach 选项并且是选择,而不是空选项。 @Matthew 检查实际输出的代码,看看你是否在任何地方看到selected="selected"
。如果您在顶部添加了一个空占位符,则要选择的第一个选项应该是第一个选项。
查看我更新的问题。按钮处是当前输出,就是它的样子,其余的 你可以在 foreach 之前添加一个 null 值的选项。
<option value=""></option>
在 foreach 之前添加以上行
【讨论】:
使用表单集合怎么样?以上是关于Laravel - 将 Select2 默认设置为 NULL 而不是第一个选项的主要内容,如果未能解决你的问题,请参考以下文章
laravel jquery select2 multiselect - 初始化选定的元素
如何在 laravel 中使用 AJAX 数据时设置 Select2 的选定值?