[英]HTML JS select with default option
我有一个如下所示的select
元素。 当用户选择一个选项时,将this.handleSelectClass
,它依次呈现另一个输入字段。(select语句位于Bootstrap模式中)
<select class="form-control" onChange={this.handleSelectClass}>
<option>Small</option>
<option>Medium</option>
<option>Large</option>
</select>
但是,我注意到,如果我打开表单并选择第一个选项,则不会呈现任何内容。 这可能是因为React没有看到任何更改,因此它没有调用onChange
。
所以我尝试添加一个空选项。
<select class="form-control" onChange={this.handleSelectClass}>
<option><option>
<option>Small</option>
<option>Medium</option>
<option>Large</option>
</select>
现在的问题是,在第一个选择之后,empty选项仍保留在选项列表中,这使列表看起来很丑陋,并且当我选择empty选项时,也会使程序抛出错误。
我也尝试仅在未选择类别时显示空选项。
<select class="form-control" onChange={this.handleSelectClass}>
{!this.state.categorySelected ? <option></option> : <div></div>}
<option>Small</option>
<option>Medium</option>
<option>Large</option>
</select>
但是,这也行不通,因为select元素处于模式中。 如果选择“ Small
并关闭模态,则再次打开它时,默认选项将为“ Small
而不是空选项。
如何使每次打开包含模式的菜单都具有默认选项呢? 然后,在做出第一个选择之后,我希望默认选项消失。
要创建HTML select元素,可以使用默认的选定项将禁用的,选定的属性应用于option元素。
http://codepen.io/anon/pen/qOvqrL
<select class="form-control">
<option disabled selected>Default option</option>
<option>Small</option>
<option>Medium</option>
<option>Large</option>
</select>
使用select
和React时,除了使用常规的selected
属性之外,您还必须进行其他操作 ,才能生成具有默认值的受控组件。
通过将value
prop添加到实际select
您将获得与具有selected
属性的普通HTML选择相同的输出。 再加上普通的onChange
处理程序,将使其具有交互性和美观性。
var Select = React.createClass({
getInitialState: function () {
return {selectValue: 'C'};
},
onChange: function (event) {
this.setState({selectValue: event.target.value});
},
render: function() {
return <select value={this.state.selectValue} onChange={this.onChange}>
<option value="A">default</option>
<option value="B">first</option>
<option value="C">second</option>
</select>;
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.