У меня есть форма с тремя полями ввода, кнопкой «Обновить» и кнопкой «Отмена». В настоящее время я работаю над отключением кнопки «Обновить», если какое-либо из трех полей пусто, и затем снова включаю кнопку после заполнения всех полей. Поля ввода и кнопки формы хранятся в отдельных компонентах, поэтому я перетаскивал значения полей ввода в соответствующий компонент, используя манипуляции с DOM.
У меня есть функция, написанная с использованием метода find lodash, которая должна помочь, но по какой-то причине она запускается, когда в поле ввода было внесено изменение, а не при загрузке страницы. Кроме того, он извлекает предыдущее значение поля ввода вместо фактического значения, отображаемого при загрузке страницы.
Например, если страница загружается без значения в одном из полей ввода, кнопка «Обновить» будет включена. После того, как вы введете первый символ в пустое поле ввода, например, букву A, кнопка будет отключена, и функция будет считывать значение поля как пустое. Если я затем введу букву S в поле, поэтому ее фактическое значение равно AS, кнопка будет снова активирована, и функция будет считать значение как A, его предыдущее значение.
Поскольку функция возвращает логическое значение, я вызываю его, когда передаю отключенную опору кнопке. Ниже описана функция, которую я написал, а также способ ее вызова в функции Render. Я чувствую, что есть кое-что очевидное, что я упускаю, и если кто-то может оказать помощь в этом, я очень ценю это. Пожалуйста, дайте мне знать, если от меня требуется дополнительная информация.
Проверка отключенной кнопки:
disableButtonCheck = () => {
const dataField = document.getElementsByClassName('InputField__input___i2o8Y');
const nullValueChecker = find(dataField, (field) => {
return field.defaultValue === '';
});
if (nullValueChecker) {
return true;
}
return false;
}
Отключить кнопку в Render:
<div className={style['action-buttons']}>
<PrimaryButton
onClick={() => {
this.updateHandler();
}}
disabled={this.disableButtonCheck()}
extraClassName={style.update}
data-action="update"
>
Обновление: я должен был отметить, что я называю поля ввода как класс, они называются массивом объектов. Я пытаюсь перебрать массив и вернуть только истинное значение, если найдены пустые строки, в противном случае вернуть false, если их нет.