Размытие любого сфокусированного поля onSubmit |Ввести окончательную форму - PullRequest
0 голосов
/ 19 октября 2019

Это может быть ошибкой, но я хотел опубликовать здесь, прежде чем открыть проблему GitHub, чтобы узнать, есть ли у сообщества в целом совет или кто-то может просто вызвать меня за то, что я сделал это неправильно.

Я хочу размыть любое сфокусированное поле на Submmit. Просто.

Согласно документам, функция onSubmit передается (values, form) в качестве аргументов, а API form включает способы получения всех зарегистрированных полей и метод для предположительно удаления любого поля. ,Вот код:

const onSubmit = async (values, form) => {
  const fieldsNames = form.getRegisteredFields();
  fieldsNames.forEach(name => form.blur(name));

  await sleep(300);
  window.alert(JSON.stringify(values, 0, 2));
};

Я раздвоил базовый пример непосредственно из документов FinalForms и добавил эти две строки, чтобы посмотреть, смогу ли я заставить их пример работать, но это не помогло. Чтобы проверить, просто введите в поле имени и нажмите клавишу ввода. Поле остается сфокусированным ..

Демонстрация CodeSandbox Здесь

Окончательная форма: Документы FormApi

Спасибо за чтение!

1 Ответ

1 голос
/ 21 октября 2019

form.blur() - это то, как вы сообщаете Final Form, что поле размыто (оно помечает состояние поля как размытое). Это больше слушатель. Чтобы на самом деле обязательно размыть поле, вам понадобится ссылка на элемент DOM.

Что-то вроде getElementById('myField').blur().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...