【问题标题】:select2 shows first option instead of placeholderselect2 显示第一个选项而不是占位符
【发布时间】:2016-02-21 16:08:46
【问题描述】:

我的 .cshtml 中有这个

@Html.DropDownListFor(m => m.Attendance.Time02InId, new SelectList(Model.ClockingLocations, "Id", "Name"), new {@class = "form-control select2-allow-clear"})

Model.ClockingLocations = Clock 列表

public class Clock
{
    public int Id { get; set; }
    public string Name { get; set; }
}

这是我准备好的文档的 jquery

    var placeholder = "Select...";

    $(".select2-allow-clear").prepend("<option></option>");

    $(".select2-allow-clear").select2({
        allowClear: true,
        placeholder: placeholder,
        width: null
    });

但是,当m.Attendance.Time02InId 没有值时,我的选择列表仍然显示我的Model.ClockingLocations 的第一项,而不是我的占位符。

【问题讨论】:

  • 只需使用内置方法添加标签选项 - @Html.DropDownListFor(m =&gt; m.Attendance.Time02InId, new SelectList(Model.ClockingLocations, "Id", "Name"), "Select...", new {@class = "form-control select2-allow-clear"}) 并删除 placeholder: placeholder,
  • @StephenM,这适用于剃刀语法。

标签: javascript jquery asp.net-mvc select2


【解决方案1】:

尝试更新您的 JQuery 代码

var placeholder = "Select...";

$(".select2-allow-clear").prepend("<option></option>");

$(".select2-allow-clear").select2({
    allowClear: true,
    placeholder: placeholder,
    width: null
});

var placeholder = "Select...";

$(".select2-allow-clear").prepend("<option value='' selected='selected'></option>");

$(".select2-allow-clear").select2({
    allowClear: true,
    placeholder: placeholder,
    width: null
});

你也可以尝试替换

$(".select2-allow-clear").prepend("<option></option>");

$(".select2-allow-clear").prepend("<option value=''></option>").val('');

希望对你有所帮助。

【讨论】:

  • 即使m.Attendance.Time02InId 有一个需要显示的值,这也会为我的所有下拉列表设置一个占位符。
  • 在这种情况下,很抱歉,我不知道您将如何在 javascript 代码中获取 m.Attendance.Time02InId 的值,但您必须将此前置行置于某些条件下,以便它并非在所有情况下都设置该值。
  • @NitinGarg 将 .prepend 更改为带有 val='' 的那个肯定对我有用。非常感谢伙计!
猜你喜欢
  • 2013-10-27
  • 2016-10-04
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
相关资源
最近更新 更多