Отключить отправку, пока все поля не будут действительны в реагирующем ремне

У меня есть форма в Reactionstrap, которая имеет несколько полей ввода, который использует FormFeedback, как это:

<Input invalid={typeof data.name === "undefined" || data.name.length<1} bssize="sm" type="text" name="name" id="name" placeholder="Name" value={data.name} onChange={this.props.handleInputChange} />
<FormFeedback >A name is required</FormFeedback>

<Button color="primary" onClick={this.save} disabled={!this.state.okToSubmit}>Submit</Button>

Можно ли отключить кнопку отправки формы, пока все поля не подтвердятся?

Я не могу найти какой-либо способ получить доступ к "недопустимой" опоре поля. Самое близкое, что я дошел до этого, - это просмотр classList цели в handleInputChange-функции. Но это кажется очень хакерским и не лучшим способом.

Совершенно новый для React, поэтому вся помощь очень ценится.

0 ответов

Есть несколько способов сделать это: Поскольку вы используете onChange обработчик событий, вы можете установить другое состояние var.

Так, например, у вас есть пять элементов формы, которые вы хотите required. Каждый раз, когда элемент проверяется, увеличивайте это состояние var на единицу. Затем добавьте условие для отключения кнопкиdisabled={this.state.okToSubmit != 5} (это также можно сделать с помощью хуков, если вы используете функциональный компонент.

Другой вариант - оставить кнопку в рабочем состоянии и выполнить всю проверку в onSubmit обработчик, но я думаю, что самый современный UX должен проверять на основе каждого элемента.

Другие вопросы по тегам