Показать сообщение отдельно
  #1 (permalink)  
Старый 03.04.2025, 02:46
Кандидат Javascript-наук
Отправить личное сообщение для sashgera Посмотреть профиль Найти все сообщения от sashgera
 
Регистрация: 20.09.2011
Сообщений: 142

Функция jQuery.fn скрыть/показать элемент
Здравствуйте
Есть пользовательская функция blink3, при помощи котрой можно поочередно скрывать/показывать элемент (элемент мигает).
Функция не моя, поэтому ничего по существу сказать больше не могу.

вот валидация инпутов, если инпут не прошел валидацию - рядом расроложенный span начинает "мигать"
вопрос в следующим - как остановить скрытие/показ span, если конкретный инпут прошел валидацию (без setInterval и setTimeout)
<button id="go">go</button><br>
<span id="err1">error</span>  <input type="text" id="inp1" /><br>
<span id="err2">error</span>  <input type="text" id="inp2" />

$("#go").click(function(){
	if($("#inp1").val() != "тест"){
            $("#err1").blink3(-1, 500);
	}else{
		$("#err1").blink3(0); //так остановить скрытие/показ не получается
	}
	
	if($("#inp2").val() != "тест"){
            $("#err2").blink3(-1, 500);
	}else{
		$("#err2").blink3(0);
	}
});

// функция blink3
// $("#myID").blink3(-1, 500);
// первый параметр (-1) - бесконечное количество скрытий/показов
// второй параметр (500) - продолжительность выполнения fadeTo
jQuery.fn.extend({
	blink3: function (i, duration){
		var c = i;
		if(i===-1 || c-- > 0){
			$(this).fadeTo(duration, 0.1, function (){
				$(this).fadeTo(duration, 1, function (){
					$(this).blink3(c, duration);  
				}); 
			});
		}
	}
});

Что я пробовал сделать:
1) так остановить не получается - $("#err1").blink3(0, 0);

2) также пробовал еще один вариант -
в функцию blink3 добавил условие if(run == false){return};
а в условии валидации инпута
if($("#inp2").val() != "тест"){
$("#err2").blink3(-1, 500);
}else{
run = false;
}
в этом варианте происходит остановка "мигания" всех спанов, а мне нужна остановка только конкретного спана..
Ответить с цитированием