JS JavaScript  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Формы и клиентская валидация

Тест проверяет чтение полей, FormData, встроенную Constraint Validation API, нормализацию и сообщения об ошибках. Задания требуют отличать удобство интерфейса от доверенной проверки: клиент помогает пользователю, но окончательное решение о данных остаётся на сервере.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 25 вопросов и 70 минут; код лучше читать построчно, не полагаясь на первое впечатление. После завершения откроются общий процент, 5 тематических шкал и объяснение каждого решения.
Вопрос 1 из 25
Какие данные попадут в FormData?
HTML/XMLHTML и JavaScript
<form id="profile">
  <input name="email" value="a@example.com">
  <input type="checkbox" name="subscribe" checked>
  <input name="disabledCode" value="X" disabled>
</form>
<script>
  const form = document.querySelector("#profile");
  console.log([...new FormData(form)]);
</script>
Вопрос 2 из 25
Почему formData.get("tag") теряет часть выбора у нескольких checkbox с одним name?
JavaScript
const data = new FormData(form);
console.log(data.get("tag"));
console.log(data.getAll("tag"));
Вопрос 3 из 25
Что возвращает checkbox.checked?
JavaScript
const box = document.querySelector("input[type=checkbox]");
console.log(box.checked, box.value);
Вопрос 4 из 25
Зачем у кнопки submit может быть name и value?
Вопрос 5 из 25
Как получить элемент формы по имени без глобальной переменной из id?
Вопрос 6 из 25
Что вернёт input.validity.valueMissing для пустого required-поля?
HTML/XMLHTML и JavaScript
<input id="name" required>
<script>
  const input = document.querySelector("#name");
  console.log(input.validity.valueMissing);
</script>
Вопрос 7 из 25
Почему поле остаётся недействительным после исправления значения?
JavaScript
input.setCustomValidity("Код уже занят");
input.value = "новый-код";
console.log(input.checkValidity());
Вопрос 8 из 25
Чем reportValidity отличается от checkValidity?
JavaScript
if (!form.reportValidity()) {
  console.log("Есть ошибки");
}
Вопрос 9 из 25
Что обходит встроенную интерактивную проверку формы?
Вопрос 10 из 25
Может ли атрибут novalidate сделать данные надёжными без серверной проверки?
Вопрос 11 из 25
Что получится после valueAsNumber у пустого number-поля?
HTML/XMLHTML и JavaScript
<input id="age" type="number">
<script>
  const input = document.querySelector("#age");
  console.log(input.valueAsNumber);
</script>
Вопрос 12 из 25
Где trim может повредить смысл данных?
JavaScript
const password = form.elements.password.value.trim();
Вопрос 13 из 25
Почему Number("1,5") не подходит для русского десятичного ввода?
JavaScript
console.log(Number("1,5"));
Вопрос 14 из 25
Когда приведение email к нижнему регистру требует осторожности?
Вопрос 15 из 25
Почему лучше хранить исходный ввод отдельно от нормализованного значения во время разбора?
Вопрос 16 из 25
Как связать текст ошибки с полем для вспомогательных технологий?
HTML/XMLHTML
<label for="email">Почта</label>
<input id="email" aria-describedby="email-error" aria-invalid="true">
<p id="email-error">Укажите адрес целиком</p>
Вопрос 17 из 25
Когда обычно лучше впервые показать ошибку обязательного поля?
JavaScript
form.addEventListener("submit", event => {
  if (!form.checkValidity()) {
    event.preventDefault();
    showFieldErrors();
  }
});
Вопрос 18 из 25
Какое сообщение полезнее для pattern-ошибки кода?
Вопрос 19 из 25
Почему не стоит очищать всю форму после серверной ошибки одного поля?
Вопрос 20 из 25
Куда разумно переместить фокус после неудачной отправки длинной формы?
Вопрос 21 из 25
Почему флаг disabled на кнопке не является полной защитой от двойной операции?
JavaScript
submitButton.disabled = true;
await fetch("/pay", { method: "POST", body: data });
Вопрос 22 из 25
Почему обработчик click кнопки может пропустить отправку формы?
JavaScript
saveButton.addEventListener("click", sendForm);
Вопрос 23 из 25
Что следует сделать в finally после асинхронной отправки?
JavaScript
setSubmitting(true);
try {
  await save(new FormData(form));
} finally {
  setSubmitting(false);
}
Вопрос 24 из 25
Как воспроизвести ошибку, возникающую только при быстром двойном submit?
Вопрос 25 из 25
Какой набор проверок лучше подтверждает качество формы?

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу