@EgorShorin

Как сократить код?

Делаю подсказки для input

<input type="url" pattern="[a-z0-9._:/]+[a-z0-9]" id="urla" >
<input type="text" pattern="[0-9]+" placeholder="87654321" id="number">
<div id="urla-div"></div><div id="number-div"></div>

и т.д.

(function() {
 var input = document.getElementById('urla');
 var form = document.getElementById('urla-div');
 var elem = document.createElement('div');
 elem.id = 'notify';
 elem.style.display = 'none';
 form.appendChild(elem);
 input.addEventListener('invalid', function(event){
 event.preventDefault();
 if ( ! event.target.validity.valid ) {
 elem.innerHTML = '<div class="alert alert-warning alert-dismissible fade show text-start" role="alert"> <strong>Адрес страницы</strong> может содержать только латинские буквы в нижнем регистре, цифры.<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> </div>';
 elem.className = 'position-relative';
 elem.style.display = 'block';
 }
 });

 input.addEventListener('input', function(event){
 if ( 'block' === elem.style.display ) {
 input.className = '';
 elem.style.display = 'none';
 }
 });

})();

(function() {
 var input = document.getElementById('number');
 var form = document.getElementById('number-div');
 var elem = document.createElement('div');
 elem.id = 'notify-4';
 elem.style.display = 'none';
 form.appendChild(elem);
 input.addEventListener('invalid', function(event){
 event.preventDefault();
 if ( ! event.target.validity.valid ) {
 elem.innerHTML = '<div class="alert alert-warning alert-dismissible fade show text-start" role="alert"> <strong>Яндекс Метрика</strong> Используйте только цифры, например, 87654321.<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> </div>';
 elem.className = 'position-relative';
 elem.style.display = 'block';
 }
 });

 input.addEventListener('input', function(event){
 if ( 'block' === elem.style.display ) {
 input.className = '';
 elem.style.display = 'none';
 }
 });

})();


В общем я под каждый input делаю скрипт, но наверняка, моно обойтись одним, где в elem.innerHTML можно будет указать текст для каждого input по id. Кто знает как эту историю реализовать?
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
моно обойтись одним, где в elem.innerHTML можно будет указать текст для каждого input по id.

Ну вы уже ответили сами. Передавайте аргументы в вашу функцию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы