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"
);

并在&lt;select&gt; 中添加一个空选项(就在@foreach($cCustomers as $customer) 上方:

<option></option>

【讨论】:

是的,正如我在问题中所说,我添加了一个占位符,并且添加了您的建议,但和以前一样,它仍然是第一个获取 data-select2-id 标志的 @foreach 选项并且是选择,而不是空选项。 @Matthew 检查实际输出的代码,看看你是否在任何地方看到selected="selected"。如果您在顶部添加了一个空占位符,则要选择的第一个选项应该是第一个选项。 查看我更新的问题。按钮处是当前输出,就是它的样子,其余的 都与选项值 192 和 81 的格式相同。 如果 ship_to 为空,只需在 foreach 循环之前添加一个 if 语句,该语句会添加另一个选项(即选中)。【参考方案2】:

你可以在 foreach 之前添加一个 null 值的选项。

<option value=""></option>

在 foreach 之前添加以上行

【讨论】:

使用表单集合怎么样?

以上是关于Laravel - 将 Select2 默认设置为 NULL 而不是第一个选项的主要内容,如果未能解决你的问题,请参考以下文章

Knockout + Select2 - 设置默认值?

jQuery select2设置默认值从列表中的一个选项吗

laravel jquery select2 multiselect - 初始化选定的元素

如何在 laravel 中使用 AJAX 数据时设置 Select2 的选定值?

如何将 Select2 默认的新标签键“tab”更改为“space”?

laravel-将默认日期设置为明天