Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
04 Мар 2023
2 мин
550

Решение проблемы с невозможностью фокусировки на недействительном элементе формы

Одна из распространенных проблем при работе с HTML-формами в браузере Google Chrome заключается в том, что при попытке отправить форму появляется сообщение

Одна из распространенных проблем при работе с HTML-формами в браузере Google Chrome заключается в том, что при попытке отправить форму появляется сообщение об ошибке: «An invalid form control with name=» is not focusable». Эта ошибка сообщает о том, что в форме есть элемент управления, который не соответствует определенным требованиям и, следовательно, не может получить фокус.

В чем причина проблемы?

Эта проблема часто возникает, когда в форме присутствуют скрытые поля, которые имеют атрибут «required». Атрибут «required» задает требование, что поле должно быть заполнено перед отправкой формы. Однако, если поле скрыто, то пользователь не может его заполнить, и браузер не позволяет отправить форму.

Вот пример кода, который может вызвать такую проблему:

<form>
  <input type="text" name="username" required>
  <input type="password" name="password" style="display: none;" required>
  <button type="submit">Submit</button>
</form>

В этом коде второе поле ввода скрыто, но имеет атрибут «required». Поэтому при попытке отправить форму возникнет ошибка.

Как решить проблему?

Есть несколько способов решить эту проблему. Один из них — убрать атрибут «required» у скрытых полей. Это можно сделать следующим образом:

<form>
  <input type="text" name="username" required>
  <input type="password" name="password" style="display: none;">
  <button type="submit">Submit</button>
</form>

В этом коде атрибут «required» удален у скрытого поля ввода, и ошибка больше не возникнет.

Если же атрибут «required» необходим для скрытых полей, другой вариант — изменить их видимость вместо использования атрибута «style». Можно использовать классы для переключения видимости полей ввода:

<style>
  .hidden {
    position: absolute;
    left: -9999px;
  }
</style>
<form>
  <input type="text" name="username" required>
  <input type="password" name="password" class="hidden" required>
  <button type="submit">Submit</button>
</form>

В этом коде скрытое поле ввода теперь классифицируется как «hidden» и не будет влиять на возможность отправки формы.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий