Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.03.2009, 09:39
moskrc
 
Сообщений: n/a

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

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

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


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

Последний раз редактировалось Андрей Параничев, 20.03.2009 в 21:15. Причина: Пользуйтесь bb-тегами [js] и [html] для оформления листингов кода в теле сообщения
Ответить с цитированием
  #2 (permalink)  
Старый 20.03.2009, 15:37
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

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

Есть два варианта.
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:41.
Ответить с цитированием
  #3 (permalink)  
Старый 20.03.2009, 15:40
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

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



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

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