无法直接解决,optgroup天生是不可选的。
方法1(不推荐): 用<option>代替<optgroup>,用样式使其看起来与option相似
<select multiple="multiple"> <option value="0" class="optionGroup">Parent Tag</option> <option value="1" class="optionChild">Child Tag</option> <option value="2" class="optionChild">Child Tag</option> </select>
.optionGroup { font-weight: bold; font-style: italic; } .optionChild { padding-left: 15px; }
经测试,Firefox69可用,Chrome77无效果。
原因是对<option>加样式在各引擎中支持程度不一。
方法2: 用<option>代替<optgroup>,用 使option缩进。
<select>
<option value="0" class="optionGroup">Parent Tag</option>
<option value="1"> Child Tag1</option>
<option value="2"> Child Tag2</option>
</select>
原理同1,但没有用css缩进,所以不会有浏览器兼容问题。
方法3: 使用框架
比如:
方法4:optgroup不可选,但在该group下增加【全部】选项,如果需要选择该optgroup,选择全部即可
虽然未能达到optgroup可选的效果,但优点如下:
- 无需外部css
- 避免用户误以为optgroup不可选,更清晰的体现optgroup是可选的。个人理解,这也是html规范有意不让optgroup可选的原因吧。
参考资料:https://stackoverflow.com/questions/9892247/selectable-optgroup-in-html-select-tag