Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Функция jQuery.fn скрыть/показать элемент (https://javascript.ru/forum/jquery/86380-funkciya-jquery-fn-skryt-pokazat-ehlement.html)

sashgera 03.04.2025 02:46

Функция 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;
}
в этом варианте происходит остановка "мигания" всех спанов, а мне нужна остановка только конкретного спана..

рони 03.04.2025 11:57

Цитата:

Сообщение от sashgera
.blink3(0);

.stop(true).css("opacity", "");

sashgera 03.04.2025 15:23

рони, большое спасибо!
//.noblink3();
$.fn.noblink3 = function(){
	$(this).stop(true).css("opacity", "");
}


Часовой пояс GMT +3, время: 14:39.