Показать сообщение отдельно
  #22 (permalink)  
Старый 21.02.2018, 08:48
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Помогите пожалуйста.

Вставил скрипт и инпуты на сайт. Работают как надо.
Но потом увидел, что в форме ниже при нажатии на плюс или минус срабатывает проверка на правильность заполнения полей. И все загорается красным (потому что еще не заполнено.

Если я убираю скрипт, который за это отвечает - то перестает работать инпут новый. На плюс нажимаю, +1 происходит, и потом возвращается обратно на 0.

Что не так делаю?

// Example starter JavaScript for disabling form submissions if there are invalid fields
    (function() {
      'use strict';
      window.addEventListener('load', function() {
        // Fetch all the forms we want to apply custom Bootstrap validation styles to
        var forms = document.getElementsByClassName('needs-validation');
        // Loop over them and prevent submission
        var validation = Array.prototype.filter.call(forms, function(form) {
          form.addEventListener('submit', function(event) {
            if (form.checkValidity() === false) {
              event.preventDefault();
              event.stopPropagation();
            }
            form.classList.add('was-validated');
          }, false);
        });
      }, false);
    })();


    var sklon = (n, obj) => n+" "+obj[(n%100>4 && n%100<20)?2:[2, 0, 1, 1, 1, 2][(n%10<5)?n%10:5]];

  		var obj = {kom:['комната', 'комнаты', 'комнат'],
  							san:['санузел', 'санузла', 'санузлов'],
  							chas:['час', 'часа', 'часов']},
  		inp = document.querySelectorAll('.san, .kom, .chas');
  		inp.forEach((el, i)=>{
  			el.value = 0;
  			var val, cl = el.className;
  			el.previousElementSibling.onclick = e => {
  				val = parseInt(el.value);
  				if (val > 0) val--;
  				el.value = sklon(val, obj[cl]);
  			};
  			el.nextElementSibling.onclick = e => {
  				val = parseInt(el.value);
  				val++;
  				el.value = sklon(val, obj[cl]);
  			};
  			el.onchange = e => {
  				val = parseInt(el.value);
  				e.target.value = sklon(val, obj[cl]);
  			};
  		});

Последний раз редактировалось the_little, 21.02.2018 в 08:51.
Ответить с цитированием