下拉列表中没有空白项的空白 HTML SELECT

Posted

技术标签:

【中文标题】下拉列表中没有空白项的空白 HTML SELECT【英文标题】:Blank HTML SELECT without blank item in dropdown list 【发布时间】:2011-09-07 14:35:19 【问题描述】:

如何实现主题?

当我写的时候:

<form>
  <select>
     <option value="0">aaaa</option>
     <option value="1">bbbb</option>
  </select>
</form>

那么默认选择的项目是“aaaa”

当我写的时候:

<form>
  <select>
     <option value=""></option>
     <option value="0">aaaa</option>
     <option value="1">bbbb</option>
  </select>
</form>

那么默认选择的项目是空白的,但是这个空白项目出现在下拉列表中。

如何实现带有隐藏在下拉列表中的默认空白值的 SELECT 标记?

【问题讨论】:

default select option as blank的可能重复 【参考方案1】:

你不能。他们根本不那样工作。下拉菜单必须始终选择其中一个选项。

你可以(虽然我不推荐)观察 change 事件,如果第一个选项为空,则使用 JS 删除它。

【讨论】:

为什么不推荐这种行为? 在很多情况下,您希望用户主动从列表中选择某些内容。我不认为 JS 是最好的方法(尽管它似乎是唯一的方法),但我真的认为应该有一种方法。【参考方案2】:

您可以使用.propselectedIndex 设置为-1:http://jsfiddle.net/R9auG/。

对于较旧的 jQuery 版本,使用 .attr 而不是 .prop:http://jsfiddle.net/R9auG/71/。

【讨论】:

@IronicMuffin:谢谢;刚刚经过测试,实际上似乎可以在所有主流浏览器上运行。 @zobidafly:感谢编辑;我已经详细说明了。 .attr 在新的 jQuery 版本中会失败。试图变得聪明让我失败了。【参考方案3】:
<select>
     <option value="" style="display:none;"></option>
     <option value="0">aaaa</option>
     <option value="1">bbbb</option>
  </select>

【讨论】:

ff/chrome - 好的,opera/ie7-9 - 不行,你可以在这里测试(有或没有 js):jsfiddle.net/R9auG/145 所以我推荐 @pimvdb 的 js-approach【参考方案4】:

这是一个使用纯 javascript 的简单方法。这是 pimvdb 发布的 jQuery 脚本的原版等价物。你可以测试一下here。

<script type='text/javascript'>
  window.onload = function()
    document.getElementById('id_here').selectedIndex = -1;
  
</script>

.

<select id="id_here">
  <option>aaaa</option>
  <option>bbbb</option>
</select>

确保“id_here”在表单和 JavaScript 中匹配。

【讨论】:

【参考方案5】:

只需使用禁用和/或隐藏属性:

<option selected disabled hidden style='display: none' value=''></option>
selected 将此选项设为默认选项。 disabled 使此选项无法点击。 style='display: none' 使此选项不显示在旧版浏览器中。请参阅:Can I Use 隐藏属性的文档。 hidden 使该选项不显示在下拉列表中。

【讨论】:

实际上 IE 11 确实显示了“隐藏”选项。 Webkit 似乎不支持 'hidden' 属性 正如Can I Use 中提到的,hidden 属性实际上是display: none,因此要支持旧版浏览器:&lt;option selected disabled hidden style='display: none' value=''&gt;&lt;/option&gt;【参考方案6】:

简单地使用

<option value="" selected disabled>Please select an option...</option>

无需脚本即可在任何地方工作,并允许您同时指导用户。

【讨论】:

【参考方案7】:

你可以试试这个sn-p

$("#your-id")[0].selectedIndex = -1

它对我有用。

【讨论】:

最好提供jsfiddle.net 来附上答案,以便提供更清晰的解释。 这假设 OP 正在使用 jQuery。【参考方案8】:

对于纯粹的 html,@isherwood 有一个很好的解决方案。对于 jQuery,给你的选择下拉一个 ID,然后用 jQuery 选择它:

<form>
  <select id="myDropDown">
    <option value="0">aaaa</option>
    <option value="1">bbbb</option>
  </select>
</form> 

然后使用这个 jQuery 清除页面加载的下拉菜单:

$(document).ready(function() 
    $('#myDropDown').val(''); 
);

或者把它单独放在一个函数中:

$('#myDropDown').val(''); 

完成您正在寻找的内容,如果您需要在不重新加载页面的情况下清空下拉菜单,则可以轻松地将其放入可能会在您的页面上调用的函数中。

【讨论】:

以上是关于下拉列表中没有空白项的空白 HTML SELECT的主要内容,如果未能解决你的问题,请参考以下文章

点击列表项的空白处没有任何反应,为啥?

angularjs中select下拉选择第一个选项为空白的解决办法

angular 下拉列表选项变的不表示

jquery自动完成没有在下拉列表中显示结果,只有空白行

下拉列表不显示内容但白色空白 XSLT

Asp.net - 在下拉列表顶部添加空白项