Я работаю над простой проверкой формы с помощью 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>
Что я делаю неправильно?
Жаль, что вы не можете изменить html, иначе атрибут required решит проблему с дырой. Возможно, вам это сойдет с рук, если вы сделаете document.querySelector("input[name='UserInfo']").required = true: P



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ваш идентификатор UserInfo указан в теге P, а не во входе.
Таким образом, когда вы пытаетесь настроить таргетинг на идентификатор, он выбирает
<p id = "UserInfo">What is your name?</p>
Переключите свой ID на вход, и он будет работать.
спасибо, но я не могу изменить свой HTML, так как это моя домашняя работа :)
У вас есть атрибут id в вашем элементе p вместо вашего элемента ввода. Если вам нужен этот идентификатор в элементе p для стилей или того, что у вас есть, используйте другой идентификатор в элементе ввода, тогда document.getElementById () для этого идентификатора должен работать.
Лучше всего переместить id = "UserInfo" на вход, но если вы не можете изменить HTML, попробуйте:
document.querySelector("input[name='UserInfo']").focus();
Идентификатор находится в теге p, а не во входном теге