powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (JavaScript) Участие одного обработчика в нескольких событиях
15 сообщений из 15, страница 1 из 1
(JavaScript) Участие одного обработчика в нескольких событиях
    #35740038
NT Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу для случаев 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
(JavaScript) Участие одного обработчика в нескольких событиях
    #35740316
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, за что боролись, на то и напорлись. Функция срабатывает и на change и на keyup. А если еще и на keypress повесишь — бужет срабатывать три раза при нажатии на клавишу.
...
Рейтинг: 0 / 0
(JavaScript) Участие одного обработчика в нескольких событиях
    #35740479
Ksnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно юзать 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
(JavaScript) Участие одного обработчика в нескольких событиях
    #35740631
NT Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyСобственно, за что боролись, на то и напорлись. Функция срабатывает и на change и на keyup. А если еще и на keypress повесишь — бужет срабатывать три раза при нажатии на клавишу.
стоп, стоп... событие onchange генерируется лишь при потере фокуса.
...
Рейтинг: 0 / 0
(JavaScript) Участие одного обработчика в нескольких событиях
    #35740767
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это если говорить об input. А остальные? :)
...
Рейтинг: 0 / 0
(JavaScript) Участие одного обработчика в нескольких событиях
    #35740798
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в ValidateElement alert'а или другой передачи фокуса нет случаем?
...
Рейтинг: 0 / 0
(JavaScript) Участие одного обработчика в нескольких событиях
    #35740799
NT Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IDVsbruckЭто если говорить об input. А остальные? :)
Эээ вешаю это дело только на input , так почему задваивается событие onkeyup ? onchange нормально же работает.
...
Рейтинг: 0 / 0
(JavaScript) Участие одного обработчика в нескольких событиях
    #35740802
NT Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
(JavaScript) Участие одного обработчика в нескольких событиях
    #35740828
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
(JavaScript) Участие одного обработчика в нескольких событиях
    #35740832
NT Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft, ну это я опечатался.
имелось в виду: element.onchange=element.onkeyup
...
Рейтинг: 0 / 0
(JavaScript) Участие одного обработчика в нескольких событиях
    #35740836
NT Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
illion, ты гениальна, сразу почему-то пропустил предположение насчет alert'а внутри ValidateElement, а потом дошло, что именно это и вызвыает второй эвент.

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

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

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


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