除非有选择的选项,否则我希望显示类似红色的错误。 有没有办法做到这一点。
答案 0 :(得分:6)
要在Material UI中设置必填的“选择”字段,您可以执行以下操作:
class SimpleSelect extends React.Component {
state = {
selected: null,
hasError: false
};
handleChange(value) {
this.setState({ selected: value });
}
handleClick() {
this.setState({ hasError: false });
if (!this.state.selected) {
this.setState({ hasError: true });
}
}
render() {
const { classes } = this.props;
const { selected, hasError } = this.state;
return (
<form className={classes.root} autoComplete="off">
<FormControl className={classes.formControl} error={hasError}>
<InputLabel htmlFor="name">Name</InputLabel>
<Select
name="name"
value={selected}
onChange={event => this.handleChange(event.target.value)}
input={<Input id="name" />}
>
<MenuItem value="hai">Hai</MenuItem>
<MenuItem value="olivier">Olivier</MenuItem>
<MenuItem value="kevin">Kevin</MenuItem>
</Select>
{hasError && <FormHelperText>This is required!</FormHelperText>}
</FormControl>
<button type="button" onClick={() => this.handleClick()}>
Submit
</button>
</form>
);
}
}
答案 1 :(得分:1)
材料ui还有其他类型的Select(native),您也可以在其中使用纯HTML必需属性来将元素标记为必需。
<FormControl className={classes.formControl} required >
<InputLabel htmlFor="name">Name</InputLabel>
<Select
native
required
value={this.state.name}
onChange={this.handleChange}
inputProps={{
name: 'name',
id: 'name'
}}
>
<option value="" />
<option value={"lala"}>lala</option>
<option value={"lolo"}>lolo</option>
</Select>
</FormControl>