Добавить один обработчик с точки зрения другого? - PullRequest
1 голос
/ 01 августа 2011

У меня есть тег со сложным обработчиком oninput, например,

 <input id="x" type="text" name="x"  
  oninput="lotsofgeneratedcocde...."/>

Я хочу добавить другой обработчик, который просто вызывает его. Сначала я хотел сказать, что это сработает:

 <input id="x" type="text" name="x"  
  oninput="lotsofgeneratedcocde...." onfocus="this.oninput"/>

Но это не так. Что мне делать? Спасибо.

Редактировать: я думал, что onfocus = "this.oninput" скопирует ссылку на функцию, поэтому я исключил скобки для вызова.

Ответы [ 3 ]

4 голосов
/ 01 августа 2011

this.oninput() (обратите внимание на круглые скобки) должно работать:

<input id="x" type="text" name="x"  
       oninput="console.log('test');" onfocus="this.oninput();"/>

http://jsfiddle.net/9kNrW/

2 голосов
/ 01 августа 2011

Это может сработать?

... onfocus="this.oninput()"

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

1 голос
/ 01 августа 2011

Краткий ответ:
Используйте парены: onfocus="this.oninput();"

Если oninput ссылается на this или на объект события, вам нужно добавить немного больше:

onfocus="this.oninput.call(this, event);"

Объяснение:
Если вы подключали обработчики событий в коде, ваш синтаксис правильный.Потому что вы устанавливаете ссылку на функцию.Т.е.,

myInput.onfocus = myInput.oninput;

Но, если присоединить к разметке, код между кавычками фактически сам является функцией.Например,

<span id="foo" onclick="alert('hello world');" />

Эквивалентно:

document.getElementById("foo").onclick = function () {
    alert('hello world');
};

Таким образом, ваш написанный код эквивалентен:

document.getElementById("x").onfocus = function () {
    this.oninput; // returns a function reference.  Does not call the function.
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...