Да, можно упростить код для валидации, используя метод setCustomValidity. Вот пример, как можно переписать ваш код:
```javascript
function checkValid(input) {
if (!input.checkValidity()) {
input.setCustomValidity('Пожалуйста, заполните поле'); // установка сообщения об ошибке
} else {
input.setCustomValidity(''); // сброс сообщения об ошибке
}
}
function validateForm() {
var input = document.getElementById("myInput");
checkValid(input);
}
// Обработчик для проверки при изменении значения поля
var input = document.getElementById("myInput");
input.addEventListener("input", function() {
checkValid(this);
});
```
Таким образом, мы создали функцию `checkValid`, которая принимает в качестве аргумента элемент `input`. Функция проверяет валидность поля и устанавливает сообщение об ошибке при необходимости с помощью метода `setCustomValidity`. Затем, в функции `validateForm`, мы вызываем `checkValid` с передачей ей элемента `input`.
Для проверки валидности поля при каждом изменении значения используется обработчик события `input`, который вызывает функцию `checkValid` для текущего элемента.
Таким образом, вы можете объединить код для валидации в функцию `checkValid` и использовать ее в любом месте, где вам необходимо проверять валидность поля. Это позволяет сделать код более компактным и переиспользовать его без дублирования.