Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (JavaScript) Участие одного обработчика в нескольких событиях / 15 сообщений из 15, страница 1 из 1
29.12.2008, 15:45
    #35740038
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
Хочу для случаев onchange и onkeyup задать одну функцию валидации, см. код ниже:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
element.onchange=function(param)
{
	return function()
	{
		ValidateElement(param);
	}
}(element);
element.onkeyup=element.onchange;

Код рабочий, но когда настаёт onkeyup функция вызывается дважды. В чем дело?
...
Рейтинг: 0 / 0
29.12.2008, 17:27
    #35740316
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
Собственно, за что боролись, на то и напорлись. Функция срабатывает и на change и на keyup. А если еще и на keypress повесишь — бужет срабатывать три раза при нажатии на клавишу.
...
Рейтинг: 0 / 0
29.12.2008, 18:37
    #35740479
Ksnk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
можно юзать setTimeout
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function ValidateElement(){
...
}
ValidateElement.call_me_later=function(param){
   if(ValidateElement.__timeout)
      ValidateElement.clearTimeout(ValidateElement.__timeout);   
   ValidateElement.__timeout=setTimeout(function(){
      ValidateElement(param);
      ValidateElement.__timeout=null;
   }, 10 )
}

element.onchange=function(param) { ValidateElement.call_me_later(param); }

element.onkeyup=element.onchange;

Есть, понятно, свои глюки. К примеру, отменить событие уже нельзя...
...
Рейтинг: 0 / 0
29.12.2008, 21:09
    #35740631
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
AntonariyСобственно, за что боролись, на то и напорлись. Функция срабатывает и на change и на keyup. А если еще и на keypress повесишь — бужет срабатывать три раза при нажатии на клавишу.
стоп, стоп... событие onchange генерируется лишь при потере фокуса.
...
Рейтинг: 0 / 0
30.12.2008, 01:50
    #35740767
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
Это если говорить об input. А остальные? :)
...
Рейтинг: 0 / 0
30.12.2008, 05:30
    #35740798
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
в ValidateElement alert'а или другой передачи фокуса нет случаем?
...
Рейтинг: 0 / 0
30.12.2008, 05:31
    #35740799
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
IDVsbruckЭто если говорить об input. А остальные? :)
Эээ вешаю это дело только на input , так почему задваивается событие onkeyup ? onchange нормально же работает.
...
Рейтинг: 0 / 0
30.12.2008, 05:36
    #35740802
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
illionв ValidateElement alert'а или другой передачи фокуса нет случаем?

тут вообще все интересно.
стоит onkeyup и onchange переставить местами, так onkeyup перестает задваиваться, зато начинает задваиваться onchange .
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
element.onkeyup=function(param)
{
	return function()
	{
		ValidateElement(param);
	}
}(element);
element.onchange=element.onchange;
...
Рейтинг: 0 / 0
30.12.2008, 07:40
    #35740828
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
NT Man
onkeyup перестает задваиваться, зато начинает задваиваться onchange
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
element.onkeyup=function(param)
{
	return function()
	{
		ValidateElement(param);
	}
}(element);
element.onchange=element.onchange;

_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
30.12.2008, 07:49
    #35740832
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
Ex_Soft, ну это я опечатался.
имелось в виду: element.onchange=element.onkeyup
...
Рейтинг: 0 / 0
30.12.2008, 07:58
    #35740836
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
illion, ты гениальна, сразу почему-то пропустил предположение насчет alert'а внутри ValidateElement, а потом дошло, что именно это и вызвыает второй эвент.

Всем спасибо!
...
Рейтинг: 0 / 0
30.12.2008, 08:03
    #35740838
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
NT Manillion, ты гениальна
спасибо, я знаю :-)

еще есть подозрение, что все это можно записать так:
Код: plaintext
element.onkeyup=element.onchange=function(){ValidateElement(this);};
...
Рейтинг: 0 / 0
31.12.2008, 07:43
    #35742359
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
illion, незнаю куда написать, чтобы ты прочитала, поэтому пишу сюда.

Хочу тебя поздравить с Новым годом!
Ты замечательный друг, никогда не бросишь в беде.
Желаю тебе иметь таких-же замечательных друзей!
И чтобы всегда все получалось!
И побольше приятных и счастливых моментов и поменьше рутины!
Будь счастлива и никогда не болей!
...
Рейтинг: 0 / 0
01.01.2009, 04:44
    #35742963
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
NT Man...illion, ты гениальна...
Я тоже, обычно, это всегда подозревал. Да и наша вся технология - тоже. Просто и гениально!
...
Рейтинг: 0 / 0
01.01.2009, 04:50
    #35742964
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JavaScript) Участие одного обработчика в нескольких событиях
Пардон, так заработался (или допрограммировался), что забыл поздравить всех с Новым Годом. Поздравляю, всего наилучшего, друзья! Тяжёлый был предыдущий год, пережили. Этот - точно будет лучше. Поздравляю!
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (JavaScript) Участие одного обработчика в нескольких событиях / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]