如何设置HTML <select>元素的默认值?

Jic*_*hao 1343 html html-select

我认为"value"<select>下面的元素上添加属性集会导致默认选择<option>包含my provided "value":

<select name="hall" id="hall" value="3">
  <option>1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
  <option>5</option>
</select>
Run Code Online (Sandbox Code Playgroud)

但是,这并没有像我预期的那样奏效.如何设置<option>默认选择的元素?

Bor*_*lid 2018

设置selected="selected"为您想要的默认选项.

<option selected="selected">
3
</option>
Run Code Online (Sandbox Code Playgroud)

  • ="选定"部分不是必需的.只需<选择选项>将按照其他答案中的说明进行操作. (192认同)
  • 如果您正在使用Angular,请注意`ng-model`会覆盖默认的选定值(如果未设置绑定对象,则为undefined).花了一些时间才弄清楚这就是为什么没有选择`selected ="selected"`选项. (66认同)
  • @MindJuice我写的是有效的多语言HTML/XML.使用<option selected>对于浏览器是可以的,但可能导致文档被其他解析器拒绝.我觉得偶尔能够在Web文档上使用XPath/XSLT很方便. (55认同)
  • 您不需要“=”selected“”部分。您所需要的只是“&lt;选项选择&gt;”。[HTML 选项选择属性 (w3schools)](https://www.w3schools.com/tags/att_option_selected.asp) (43认同)
  • <option value ="3"selected ="selected"> 3 </ option>当选择选项3时,该值将作为字符串传递. (16认同)
  • 并继续使用<Select>的id属性,并且对<select> html元素使用value属性是不好的. (5认同)
  • 对于AngularJS开发人员,您可以使用ng-init将模型初始化为您想要选择的值. (4认同)
  • 是的,对于Angular2/4 +,确保在<option value ='3'selected ="selected"[(ngModel)] ="mymodel"> 3 </ option>等选项上设置值是很好的,并确保你要么在声明中还是在构造函数中将模型初始化为该值.this.mymodel ='3'.我将此选项与空白值和我选项上的disabled属性一起使用,以允许设置默认值(实际上是水印). (3认同)
  • 顺便说一下,在所有流行的浏览器中,你也可以使用`<select>`标签的`value`属性设置一个默认值(一个预先选择的选项),即`<select value ="3">`,但它不是在W3C验证器中有效. (2认同)
  • @NicolasV最简单的方法是:将旧值保存在变量中,并在每次循环迭代中检查循环的值是否等于保存的值.如果是,则将`selected ="选中"`添加到输出中.:) (2认同)

Nob*_*ita 535

如果您希望将默认文本作为一种占位符/提示但不被视为有效值(例如"完成此处","选择您的国家"ecc.),您可以执行以下操作:

<select>
  <option value="" selected disabled hidden>Choose here</option>
  <option value="1">One</option>
  <option value="2">Two</option>
  <option value="3">Three</option>
  <option value="4">Four</option>
  <option value="5">Five</option>
</select>
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是大多数人都在寻找的东西.好答案. (51认同)
  • 我认为这应该是公认的答案。 (2认同)

Red*_*ter 224

完整的例子:

<select name="hall" id="hall"> 
  <option> 
    1 
  </option> 
  <option> 
    2 
  </option> 
  <option selected> 
    3 
  </option> 
  <option> 
    4 
  </option> 
  <option> 
    5 
  </option> 
</select> 
Run Code Online (Sandbox Code Playgroud)

  • selected ="selected"应适用于所有doctypes.XHTML不喜欢没有值的属性. (56认同)
  • @DanielParejoMuñoz,好的,它可以忽略不计.但是如果我的doctype是html而不是xhtml,为什么要浪费任何字节呢? (14认同)
  • @Rodrigo编写`selected ="选择"`真的很难吗?我的意思是,你在节省什么?时间?尺寸?它可以忽略不计,如果它使代码更"符合",**为什么不这样做**? (13认同)
  • 这比使用selected ="selected"更简单. (10认同)
  • selected ="selected"看起来像是一个错误.在几个月内,我可能会将其更改为选择="3",这意味着这意味着选择了第3项.(并打破我的页面) (5认同)

Min*_*ice 86

我遇到了这个问题,但是接受和高度赞同的答案对我来说并不适用.事实证明,如果您使用React,那么设置selected不起作用.

相反,您必须<select>直接在标记中设置一个值,如下所示:

<select value="B">
  <option value="A">Apple</option>
  <option value="B">Banana</option>
  <option value="C">Cranberry</option>
</select>
Run Code Online (Sandbox Code Playgroud)

在React页面上阅读更多有关原因的信息.

  • 是的,但这不是HTML,它是JSX,所以它不需要遵循W3C规则.最后由React生成的HTML是有效的. (3认同)
  • 您可以使用`<select>`标签的`value`属性在下拉列表中设置预先选择的选项,即`<select value ="3">`,但它在W3C验证器中无效. (2认同)

小智 67

你可以这样做:

<select name="hall" id="hall">
    <option> 1 </option>
    <option> 2 </option>
    <option selected> 3 </option>
    <option> 4 </option>
    <option> 5 </option>
</select> 
Run Code Online (Sandbox Code Playgroud)

在选项标记内提供"selected"关键字,您希望在下拉列表中默认显示该关键字.

或者您也可以为选项标签提供属性,即

<option selected="selected">3</option>
Run Code Online (Sandbox Code Playgroud)

  • @JRM我认为你的意思是,如果你的文档符合XHTML,那么属性必须有一个值.在HTML中,不需要"selected = selected".http://www.w3.org/wiki/HTML/Elements/select,https://developer.mozilla.org/en-US/docs/HTML/Element/select上的示例未指定值.需要注意的重要一点是,`selected ="false"`是不允许的,`selected =""`也使它被选中.选择未选择的唯一方法是删除该属性.http://www.w3.org/html/wg/drafts/html/master/infrastructure.html#boolean-attributes (40认同)
  • 需要明确的是,w3标准是<option selected ="selected"> 3 </ option> (13认同)
  • 我永远也不会理解这样的问题。他们确实像是正确的答案。.2年后 (3认同)

小智 50

如果你想使用Form中的值并保持动态,请尝试使用php

<form action="../<SamePage>/" method="post">


<?php
    $selected = $_POST['select'];
?>

<select name="select" size="1">

  <option <?php if($selected == '1'){echo("selected");}?>>1</option>
  <option <?php if($selected == '2'){echo("selected");}?>>2</option>

</select>
</form>
Run Code Online (Sandbox Code Playgroud)


Cho*_*ang 39

我更喜欢这个:

<select>
   <option selected hidden>Choose here</option>
   <option value="1">One</option>
   <option value="2">Two</option>
   <option value="3">Three</option>
   <option value="4">Four</option>
   <option value="5">Five</option>
</select>
Run Code Online (Sandbox Code Playgroud)

选择选项后,"选择此处"将消失.

  • 我也在使用该浏览器,没有遇到任何问题. (2认同)
  • 考虑添加`value =""`以确保获得空值. (2认同)

小智 30

大雄的回答有所改进.您还可以通过隐藏"选择此处"元素来改进下拉列表的可视化视图.

<select>
  <option selected disabled hidden>Choose here</option>
  <option value="1">One</option>
  <option value="2">Two</option>
  <option value="3">Three</option>
  <option value="4">Four</option>
  <option value="5">Five</option>
</select>
Run Code Online (Sandbox Code Playgroud)


All*_*lly 18

另一个例子; 使用JavaScript设置选定的选项.

(您可以使用此示例将值数组循环到下拉组件中)

<select id="yourDropDownElementId"><select/>

// Get the select element
var select = document.getElementById("yourDropDownElementId");
// Create a new option element
var el = document.createElement("option");
// Add our value to the option
el.textContent = "Example Value";
el.value = "Example Value";
// Set the option to selected
el.selected = true;
// Add the new option element to the select element
select.appendChild(el);
Run Code Online (Sandbox Code Playgroud)

  • @ 7yl4r编号`selected`是一个布尔属性,由w3c定义 - http://www.w3.org/TR/html401/interact/forms.html`17.6.1选择的预选选项[CI] - 设置时,此布尔属性指定此选项已预先选定.有关使用情况的更多信息,请参阅w3c学校 - http://www.w3schools.com/jsref/prop_option_selected.asp (4认同)

Mic*_*lec 18

我认为最好的方法是:

<select>
   <option value="" selected="selected" hidden="hidden">Choose here</option>
   <option value="1">One</option>
   <option value="2">Two</option>
   <option value="3">Three</option>
   <option value="4">Four</option>
   <option value="5">Five</option>
</select>
Run Code Online (Sandbox Code Playgroud)

为什么不禁用?

当您将Disabled属性与<button type="reset">Reset</button>value 一起使用时,不会重置为原始占位符。而是浏览器选择第一个未禁用选项,这可能会导致用户错误。

默认空值

每个生产表单都有验证,那么空值应该不是问题。这样我们可能有不需要的空选择。

XHTML语法属性

selected="selected"语法是与XHTML和HTML 5兼容的唯一方法。这是正确的XML语法,一些编辑者对此可能感到满意。它向后兼容。我对此没有强烈的感觉,但是如果您需要以上提到的参数,则应遵循完整的语法。


til*_*lak 14

所述选定的属性是一个布尔属性.

如果存在,它指定在页面加载时应预先选择一个选项.

预选选项将首先显示在下拉列表中.

<select>
  <option value="volvo">Volvo</option>
 <option value="saab">Saab</option>
 <option value="vw">VW</option>
 <option value="audi" selected>Audi</option> 
</select> 
Run Code Online (Sandbox Code Playgroud)


小智 9

如果你有反应,你可以使用defaultValueas属性而不是valueselect标签.


Aks*_*ain 6

如果使用的是带有角度1的select,则需要使用ng-init,否则,将不会选择第二个选项,因为ng-model会覆盖默认值

<select ng-model="sortVar" ng-init='sortVar="stargazers_count"'>
  <option value="name">Name</option>
  <option selected="selected" value="stargazers_count">Stars</option>
  <option value="language">Language</option>
</select>
Run Code Online (Sandbox Code Playgroud)


Ahm*_*r11 5

我只是简单地将第一个选择选项值设为默认值,然后使用 HTML5 的新“隐藏”功能在下拉列表中隐藏该值。像这样:

   <select name="" id="">
     <option hidden value="default">Select An Option</option>
     <option value="1">One</option>
     <option value="2">Two</option>
     <option value="3">Three</option>
     <option value="4">Four</option>
   </select>
Run Code Online (Sandbox Code Playgroud)