Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.04.2016, 05:39
Аватар для moslem
Аспирант
Отправить личное сообщение для moslem Посмотреть профиль Найти все сообщения от moslem
 
Регистрация: 22.07.2013
Сообщений: 30

Пройтись по input'там и сверить введенные данные с разными массивами.
Здравствуйте.

Есть вот таких 18 input'тов



Первые 5 нужно сверить с массивом firstPi[] (это первая колонка 5 элементов)
Вторые 5 нужно сверить с массивом secondPi[] (это вторая колонка 5 элементов)
Третье 5 нужно сверить с массивом defPi[] (это третья колонка 5 элементов)

А для остальных последних 3 input'тов, которые расположены внизу, у меня для каждой из них функции с формулами.

В общем на данный момент имеется вот такой через жопу написанный код мною )).

$('.step-but-3').on('click', function(){
var isTrue = true;
	$(".p1").each(function(i, el){
		var v = f1ToFloat(el.value);
		if(v != firstPi[i]){
			alert("Неправильный P'"+(i+1)+". Исправьте и заново нажмите на кнопку.");
			isTrue = false;
			$(el).addClass('error');
			return false;
		} else{
			$(el).removeClass('error');
		}
	});
	if(!isTrue) return;
	$(".p2").each(function(i, el){
		var v = f1ToFloat(el.value);
		if(v != secondPi[i]){
			alert("Неправильный P''"+(i+1)+". Исправьте и заново нажмите на кнопку.");
			isTrue = false;
			$(el).addClass('error');
			return false;
		} else{
			$(el).removeClass('error');
		}
	});
	if(!isTrue) return;
	$(".pid").each(function(i, el){
		var v = f1ToFloat(el.value);
		if(v != defPi[i]){
			alert("Неправильный P"+(i+1)+" общ. Исправьте и заново нажмите на кнопку.");
			$(el).addClass('error');
			return false;
		} else{
			$(el).removeClass('error');
		}
	});
	if(!isTrue) return;
	if(f1ToFloat($(".pi2-1").val()) != pi2f()){
		$(".pi2-1").addClass('error');
		alert("Неправильный P2' Исправьте и заново нажмите на кнопку.");
		return false;
	} else {
		$('.pi2-1').removeClass('error');
	}
	if(!isTrue) return;
	if(f1ToFloat($(".pi2-2").val()) != pi2s()){
		$(".pi2-2").addClass('error');
		alert("Неправильный P2'' Исправьте и заново нажмите на кнопку.");
		return false;
	} else {
		$('.pi2-2').removeClass('error');
	}
	if(!isTrue) return;
	if(f1ToFloat($(".pi2-def").val()) != pi2d()){
		$(".pi2-def").addClass('error');
		alert("Неправильный P2 общ Исправьте и заново нажмите на кнопку.");
		return false;
	} else {
		$('.pi2-def').removeClass('error');
	}
        alert('Значение введены верно.');
});


Соответственно здесь видно, что при нажатии на кнопку, она проверяет вначале 5 элементов (класс .p1), затем другие столбцы и тд, код часто повторяется, типа оставнока действий если значение не правильно + добавление класса error и т.д.

Поэтому я решил для всех input'тов добавить класс each к примеру, и через один each проверить все input'ты и сделать аккуратный и приятный код.

$('.each').each(function(i, el){
		var date = $(el).value;
		console.log(data);
		if(el <= 5){
			if(data != firstPi[i]){
				$(el).addClass('error');
				alert("Неправильный P'"+(i+1)+". Исправьте и заново нажмите на кнопку.");
			}
		} else {
			$(el).removeClass('error');
		}
	});


Вот таким способом хотел проверку сделать первых 5 input'тов, но что-то не так пошло.

Последний раз редактировалось moslem, 06.04.2016 в 05:44.
Ответить с цитированием
  #2 (permalink)  
Старый 06.04.2016, 08:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

moslem,
для медитации
var res = {
    "p1": firstPi,
    "p2": secondPi,
    "pid": defPi
};
Object.keys(res).forEach(function(key) {
    var arr = res[key];
    [].forEach.call(document.querySelectorAll("." + key), function(el, i) {
        el.value == arr[i] ? el.classList.remove("error") : el.classList.add("error")
    })
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно получить введенные данные в поле? buket jQuery 11 11.04.2010 19:59