Ребят есть вот такой код,суть которого должен отследить сколько цифр введено в инпут согласно маске их 4 разных(используется inputmask) сколько должно быть цифр задано data-value, но проблема в том что почти все работает если в номере полиса не вводить "0" Почему то 0 он не принимает как число и не добавляет в массив, хотя в инпуте вводится 0, подскажите по чему это а то че то не соображу... все это надо конечно же через keyup так как он отслеживает нажатие клавиш и если стирать номер он отслеживает изменение в отличии от keypress.
('.b-registry-form__choice-policy input').change(function (e) {
var data = $(this).data();
var $dataval = $('.b-registry-form__radio-btn').filter(':checked').data('value');
console.log('дата вал',$dataval);
$polises.filter('.active').removeClass('active').css({display: 'none'});
$polises.filter('[data-polis-type="' + data.polisType + '"]').addClass('active').css({display: ''});
$policy.val('').inputmask({
inputEventOnly: true,
mask: data.polisMask,
placeholder: 'X',
oncomplete: function () {
$date.focus();
}
}).attr('placeholder', data.polisMask.toString().replace(/9/g, 'Х')).focus();
// выше для полноты картины кода, ниже уже сам код по вопросу...
$('.b-registry-form__input.b-registry-form__input--policy.border-hover-portal').keyup(function(){
var arr = $policy.val().split(''); //разбиваем строку
var set= []; //новый массив в который собирается вводимые цифры
arr.forEach(function(item, i) {
if(Number(item)) { //из строки в цифры
set.push(item); //добавляет в массив
if (set.length === $dataval){ // сравнивает кол-во цифр в массиве
$('.b-btn--red').css("background", "#003BF4");
}else{
$('.b-btn--red').css("background", "#F46800");
}
}
})
});
}).filter(':checked').change();
})(jQuery);