Как мы видим в вашем коде, вы допустили крошечную ошибку. Вы собираетесь оценить name
, когда вы его вообще не определили. Поэтому нам нужно определить переменную на основе вашего входного значения, как показано ниже:
const name = document.getElementsByName("UserInfo")[0].value; // Since this query will return an array of items where they name are UserInfo I strongly suggest to don't use it for getting inputs value.
Из коробки ПРИМЕЧАНИЕ: Поскольку входное значение и, как правило, входные данные в каждой форме являются уникальными элементы, поэтому лучший способ получить их значение - присвоить им уникальный идентификатор, а затем связать их со своим уникальным идентификатором, например:
HTML
<input type="text" id="userInfo" name="UserInfo" size="40" />
Javascript
const name = document.getElementById("userInfo").value;
Итак, окончательная рабочая версия вашего кода будет выглядеть примерно так:
function Validate() {
const name = document.getElementsByName("UserInfo")[0].value;
if (!name) { // You can evaluate a variable simply with ! sign which is cover all '', null, and undefined instead of or operator
alert('Please enter a name');
return false;
} else {
alert('Name entered successfully');
return true;
}
}
<h2>A Simple Quiz</h2>
<fieldset>
<legend>About You</legend>
<p id="UserInfo">What is your name?</p>
<div>
<input type="text" name="UserInfo" size="40" />
<button onclick="Validate()">Submit</button>
</div>
</fieldset>
ПРИМЕЧАНИЕ: Я внес небольшие изменения в ваш код, чтобы соответствовать передовым методам.