有没有办法为 HTML 下拉菜单设置说明文本但不用作选项?

Is there a way to set the instruction text for HTML dropdown but not used as an option?

我在 JavaScript 中实现下拉菜单时遇到了困难。通常,我们将通过设置获得 HTML 下拉列表的默认值:

 <option selected> blablabla </option>

但是,现在我收到了一个新请求,用于在 she/he 做出选择之前让下拉列表向最终用户显示一些有用的说明文本。下拉选项也将被填充。但是,这段说明文本将不会用作选项。因此,每当用户折叠下拉菜单时,he/she 将无法 select 此说明文本。

到目前为止我写的代码是:

for(var i=0;i<jsondata.length;i++){
        dropDown.append('<option  value="'+jsondata[i]   +'">'+jsondata[i]+'</option>');
    }
dropDown.append('<option selected>Please select a proper organization</option>');

但是,这不是很好,因为它会将说明文本作为一个单独的选项。

我想知道在JavaScript中是否有办法实现这个?

您只能使用 html 来实现。只需将说明选项设为 disabled

看到这个。 http://jsfiddle.net/z8pfk2bg/

<select>
  <option value="volvo" disabled selected>please select a car</option>
  <option value="saab">Saab</option>
  <option value="vw">VW</option>
  <option value="audi">Audi</option>
</select>

>IE7 中也得到了很好的支持,如果您使用 javascript http://jsfiddle.net/33dd3mfx/

填充选项

您可以用 <optgroup> 包裹 <option> 元素,其中 label 设置包裹的 <option> 组的显示文本:

var dropdown = $('#demo'),
  opts = ['A', 'B', 'C'];

for (var i = 0, len = opts.length; i < len; i++) {
  dropdown.append('<option value="' + opts[i] + '">' + opts[i] + '</option>');
}

dropdown.find('option').wrapAll('<optgroup label="Select a letter"></optgroup>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="demo"></select>

这种方法的缺点是,与使用禁用 <option>.

参考文献: