Focus () не работает при проверке формы JavaScript

Я работаю над простой проверкой формы с помощью JavaScript, и у меня проблема при попытке focus () на поле, которое было заполнено неправильно

// Проверка на пустое имя

if (document.forms[0].UserInfo.value == ""){
    document.getElementById("UserInfo").focus();
    errorMessage += "Name cannot be empty \n";
}

Я также пробовал сделать это по-другому, но безуспешно

document.getElementsByName("UserInfo")[0].focus();
document.forms[0].UserInfo.focus();

По сути, когда появляется предупреждение, я хочу, чтобы соответствующее поле было выделено.

Это часть HTML:

<fieldset>
    <legend>About You</legend>
    <p id = "UserInfo">What is your name?</p>
    <div>
        <input type = "text" name = "UserInfo" size = "40">
    </div>
</fieldset>

Что я делаю неправильно?

Идентификатор находится в теге p, а не во входном теге

Taplar 23.04.2018 19:08

Жаль, что вы не можете изменить html, иначе атрибут required решит проблему с дырой. Возможно, вам это сойдет с рук, если вы сделаете document.querySelector("input[name='UserInfo']").required = true: P

Endless 24.04.2018 11:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
88
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ваш идентификатор UserInfo указан в теге P, а не во входе.

Таким образом, когда вы пытаетесь настроить таргетинг на идентификатор, он выбирает

 <p id = "UserInfo">What is your name?</p>

Переключите свой ID на вход, и он будет работать.

спасибо, но я не могу изменить свой HTML, так как это моя домашняя работа :)

Peter Brown 23.04.2018 19:14

У вас есть атрибут id в вашем элементе p вместо вашего элемента ввода. Если вам нужен этот идентификатор в элементе p для стилей или того, что у вас есть, используйте другой идентификатор в элементе ввода, тогда document.getElementById () для этого идентификатора должен работать.

Ответ принят как подходящий

Лучше всего переместить id = "UserInfo" на вход, но если вы не можете изменить HTML, попробуйте:

document.querySelector("input[name='UserInfo']").focus();

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