Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Нажать на ссылку - она запустилась и стала неактивной. Помогите сделать. (https://javascript.ru/forum/jquery/3122-nazhat-na-ssylku-ona-zapustilas-i-stala-neaktivnojj-pomogite-sdelat.html)

moskrc 20.03.2009 09:39

Нажать на ссылку - она запустилась и стала неактивной. Помогите сделать.
 
Привет! Есть в корп. приложении отчеты, которые долго строятся. Иногда люди жмут на ссылку по 5 раз. Нужно сделать так чтобы она после первого нажатия срабатывала и становилась неактивной.

Попробовал сделать вот так...

$("a.longProcess")
	.click(function(){ $(this).attr("href","#").css('color','silver') });


Но теперь она принажатии указывает на #, и не срабатывает сама по себе.

hogart 20.03.2009 15:37

Вообще кошмар.

Есть два варианта.
1:
$("a.longProcess").click(function(evt){ 
	var target = $(this);
	if (target.hasClass('inactive')) {
		evt.preventDefault();
		return false;
	} else {
		target.addClass('inactive');
		// стартуем долгий процесс…
	}
});


Более правильный вариант 2:
$("span.longProcess").bind('click', generateReport);
var generateReport = function(evt) {
	var target = $(this);
	target.unbind('click', generateReport).addClass('inactive');
	// стартуем долгий процесс…	
}

span.longProcess надо CSS-ом привести к виду ссылки.

В обоих случаях надо показать человеку анимацию, что дескать «процесс идет, надо подождать». Главное это, а невозможность запуска еще раз — это так, fool proof.

hogart 20.03.2009 15:40

Еще лучше: кнопку прятать совсем, вместо нее показывать колесико/прогресс-бар/в общем, символ процесса загрузки.


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