#html #radio-button #react-bootstrap #radio-group
#HTML #переключатель #react-bootstrap #группа радиосвязи
Вопрос:
Я использую пару переключателей React-Bootstrap в своем приложении. Мне нужно потребовать, чтобы пользователь сделал выбор. Однако добавление, required
как показано здесь, не имеет того эффекта, который был бы на радиовходе HTML.
<Form.Check inline label="One" type='radio' required />
<Form.Check inline label="Two" type='radio' required />
Как я могу применить здесь атрибут HTML5 required
? Я ищу базовую проверку HTML5, а не проверку React.
Комментарии:
1. Вы можете сделать это в Form.Control в соответствии с react-bootstrap.netlify.app/components /forms / …
2. Спасибо, но я не уверен, к чему вы меня там подводите. Я ищу базовую проверку HTML5, а не проверку React.
3. Не смотрел на это так внимательно, но заметил, что они использовали required с Form.Controls и Form. Проверьте, но последняя была в Form.Group, там также есть собственный раздел проверки html5 с использованием isValid и т.д. — Честно говоря, не использовал это!
Ответ №1:
У меня была та же проблема, что и у вас, на самом деле это очень просто, и жаль, что они не указывают в документации.
Дайте им всем одинаковое имя.
<Form.Check name="grouped" required inline label="One" type='radio' />
<Form.Check name="grouped" required inline label="Two" type='radio' />
Комментарии:
1. Конечно, это было бы упомянуто в документации по HTML , если бы я подумал сослаться на это. 🙂
Ответ №2:
Шаг 1: Установите флаг в состояние, по умолчанию равное true
class HaveAccount extends Component {
state = {
flag: true,
};
render() {
const { haveAccount, updateHaveAccount } = this.props;
const handleChange = (e) => {
if (this.state.flag)
this.setState((prevState) => ({ ...prevState, flag: false }));
updateHaveAccount({ value: e.target.value });
};
return (
<div>
<Form className="d-flex flex-column justify-content-center">
<Form.Group as={Row}>
<Col sm={{ span: 7, offset: 5 }}>
<Form.Check
type="radio"
label="YES"
name="haveAccountRadios"
value={true}
id="haveAccountRadios1"
onChange={handleChange}
/>
<Form.Check
type="radio"
label="NOPE"
name="haveAccountRadios"
value={false}
id="haveAccountRadios2"
onChange={handleChange}
/>
</Col>
</Form.Group>
<Form.Group className="d-flex justify-content-center">
<Link
className={`button button-link ${
this.state.flag ? "disabled" : ""
}`}
to="/login"
>
Next
</Link>
</Form.Group>
</Form>
</div>
);
}
}
Шаг 2: Я условно добавляю className disabled
на основе флага. Флаг обновляется только при первом handleChange
выполнении.
Шаг 3: Добавьте CSS
.disabled {
background-color: #ccc;
pointer-events: none;
}