Как я могу заставить элемент вызывать функцию для любого и для всех событий? - PullRequest
0 голосов
/ 13 февраля 2012

Я не думаю, что объяснение моего конкретного сценария могло бы сильно помочь здесь. Короче говоря, мне нужно знать, как я могу вызвать функцию для любого события. Идея состоит в том, чтобы вызывать одну и ту же функцию независимо от того, какое событие происходит с конкретным элементом.

В моей голове идеальный способ сделать это - что-то вроде:

<div onAnyEvent="function()"></div>

Вместо:

<div onClick="function()" onMouseover="function()" onKeypress="function()"></div>

1 Ответ

0 голосов
/ 16 февраля 2012

Лучший метод, который я нашел в ходе исследований, - это создать прослушиватель событий для каждого события в одном и том же элементе следующим образом:

window.onload = addListeners;

function addListeners(){
  if(window.addEventListener){
    document.getElementById('message').addEventListener('keydown',textarea_resize,false);
    document.getElementById('message').addEventListener('keyup',textarea_resize,false);
    document.getElementById('message').addEventListener('keypress',textarea_resize,false);
}

Чтобы объяснить немного дальше:

addEventListener('event to listen to', function_to_be_called, useCapture-value)

Первый параметр - это событие, которое вы хотите прослушать (т. Е. 'click' или 'keydown').

Вторая - это функция, которую вы хотите вызвать: (т.е. validate_form).

- вы также можете отправить параметры в функцию: validate_form(e, i).

Последнее значение для захвата использования обычно устанавливается на false для большинства применений, а false - это автоматическое значение, если вы не указали никакого значения. Дальнейшее объяснение можно получить здесь !

Таким образом, полный пример может быть: document.getElementById('message').addEventListener('keydown',textarea_resize,false);, как я показал выше.

...