1

我已经看到很多帖子和人们使用这样的 DDL 占位符的例子...... @Html.DropDownList("lstUsers",(SelectList)ViewBag.UsersList, "--Select User--")

或者

@Html.DropDownListFor(u => u.RoleID, Model.RoleList, "Select", new { @id="hi"})

我的意思是这些工作,但我希望占位符在 ddl 索引更改后消失,所有这些都是为第一个索引放置虚拟文本,然后可以再次选择。我无法为我的生活找到答案。我试过jquery

$("#tb2").attr("placeholder", "--Please Select--"

它适用于文本框,但不适用于 DropDown。我正在使用动态生成的 ddl

谢谢!

4

1 回答 1

1

这不是 select 元素的工作方式。该“占位符”实际上是选择列表中的一个成熟选项。它的值通常设置为一个空字符串,因此如果在 POST 上仍然选择它,则会发布一个空字符串,如果该字段应该有一个值,则会导致错误。它不仅会自行消失。

文本框完全不同。当占位符文本放置在文本框中时,它实际上会被用户输入覆盖,因此它会消失。在 HTML5 中,文本框现在有一个实际placeholder属性,它将根据输入的焦点显示和隐藏一些文本。但是,选择元素没有等价物。

您可以使用一些额外的 JavaScript 来做您想做的事情。您只需注意选择上的更改事件,如果它有一个值(不是“占位符”),那么您可以从选择中删除第一项(应该是占位符):

$('#mySelect').on('change', function () {
    if ($(this).val() != '') {
        var firstChild = $(this).children().eq(0);
        if (firstChild.prop('value') == '') firstChild.remove();
    }
});

(我在这里使用 jQuery,因为在直接的 JavaScript 中做同样的事情会更加艰巨,而且由于您使用的是 ASP.NET MVC,所以可以肯定的是,您也在使用 jQuery)

于 2013-10-29T17:27:49.873 回答