Как вы попытались, можно использовать функцию «generi c», чтобы проверить достоверность любого входного значения с помощью handleInvalidities(inputValue)
Затем функцию validateField(elementId)
, чтобы применить вышеуказанную проверку и распечатать саму ошибку. Затем функция onSubmit
, где вы можете вызвать поле проверки для любого поля ввода из вашей формы
РЕДАКТИРОВАТЬ
Да, возможно, я создал div со всеми спецификациями (я пытался с span, но не удалось :() и для каждого элемента будет добавлен div ошибки, структура элементов будет
<div>
<input/>
<errorDiv/>
</div>
Если вы введете текст во ввод и нажмете submit, ошибка исчезнет. xD
function handleInvalidities(inputValue) { // Takes input field as parameter
if (inputValue == null || inputValue == "") {
return "Invalid entry. This field can not be blank. Please enter a value.";
} else {
return "";
}
}
function createErrorDivforElement(elementId, message) {
let div = document.createElement("div");
div.style.width = "auto";
div.style.height = "18px";
div.classList.add("error");
div.innerHTML = message;
div.id = elementId + "_error";
return div;
}
function validateField(elementId) {
const element = document.getElementById(elementId);
const elementValue = element.value;
const error = handleInvalidities(elementValue)
const errorDiv = createErrorDivforElement(elementId, error);
// if it's = 2, it already has the error div attached
if (element.parentNode.childNodes.length < 2) {
element.parentNode.appendChild(errorDiv);
}
var errDiv = document.getElementById(elementId + "_error");
if (error !== "") {
errDiv.style.display = "block";
} else {
errDiv.style.display = "none";
}
}
function onSubmit() {
validateField("userName");
validateField("country");
}
.error {
color: red;
}
<div><input type="text" id="userName" aria-describedby="name-format" placeholder="Name"></div>
<div><input type="text" id="country" aria-describedby="name-format" placeholder="Country"></div>
<button type="submit" value="submit" onclick="onSubmit()">Submit</button>