我看过很多帖子和人们使用像这样的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的
谢谢!
答案 0 :(得分:1)
这不是select元素的工作原理。 “占位符”实际上是选择列表中的完整选项。它的值通常设置为空字符串,这样如果它仍然在POST上被选中,则会发布一个空字符串,如果该字段预计有值,则会导致错误。它不仅会自动消失。
文本框完全不同。当占位符文本放在文本框中时,它实际上被用户输入覆盖,因此它消失了。在HTML5中,文本框现在具有实际的placeholder
属性,该属性将根据输入的焦点显示和隐藏一些文本。但是,select元素没有等价物。
你可以通过一些额外的JavaScript来做你想做的事情。您只需要在select上观察更改事件,如果它有值(而不是“占位符”),那么您可以从select中删除第一个项目(应该是占位符):
$('#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这是一个安全的选择)