#javascript #html
#javascript #HTML
Вопрос:
Я пытаюсь добавить обработку сообщений об ошибках в Javascript, но у меня возникли проблемы. Если пользователь вводит состояние длиной не два символа, я пытаюсь заставить его вывести сообщение об ошибке. Я также включаю свою функцию renderBarChart, если это поможет.
js
stateSubmitButton.addEventListener("click", function(event) {
event.preventDefault();
state = stateUserInput.value.toUpperCase();
let stateFeedbackElem = document.querySelector("#stateFeedback");
if (state.length == 2) {
stateUserInput.setCustomValidity("");
stateFeedbackElem.textContent = "";
renderBarChart(state);
state = "";
} else {
stateUserInput.setCustomValidity("Please enter a two letter abbreviated state.");
stateFeedbackElem.textContent = "Please enter a two letter abbreviated state.";
state = "";
}
})
HTML
<form class="form" novalidate>
<label for="state-input">State:</label>
<input name="state" type="text" id="state-input" placeholder="(i.e. WA)">
<button type="submit" id="state-submit" class="btn btn-dark btn-lg ml-2">Submit</button>
<div id="stateFeedback" class="invalid-feedback"></div>
</form>
Комментарии:
1. Что за проблема или проблема?
2. К сожалению, сообщение об ошибке никогда не отображается!
3.
renderBarChart is not defined
4. Я действительно определил его! Я просто включил его в код, и я знаю, что это работает, потому что все функционирует. Просто не мои сообщения об ошибках.
5. теперь —
dataSet is not defined
Ответ №1:
Я заметил пару проблем.
Вы установили novalidate
в своей форме, что означает .setCustomValidity()
, что ошибка не будет отображаться, поскольку проверка не будет выполнена.
Если
novalidate
атрибут установлен для<form>
элемента, интерактивная проверка ограничений не выполняется.
Если stateUserInput
это #state-input
ввод, .textContent
он должен работать, и текст должен быть установлен. Но, вероятно, оно не отображается, поскольку invalid-feedback
класс имеет свойство CSS display: none;
. Вам нужно добавить d-block
класс или использовать invalid-feedback
элемент, как показано в примерах начальной загрузки.
И просто примечание: предпочитайте добавлять прослушиватель событий в форму и прослушивать SubmitEvent вместо click
события на кнопке отправки.