Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Регистрация события для большого кол-ва элементов


Автор: Forza 1.12.2004, 21:43
Aliance, ok.

А не можешь ли ты показать, как зарегистрировать один обработчик события (например, onfocus) для всех input type=text в форме/документе? На основе твоего описания у меня это не получилось.
Этот обработчик должен уметь обращаться к параметрам этого текстового поля: в частности к его name.

Буду очень признателен, если мне поможешь.

Автор: Aliance 4.12.2004, 21:47
Цитата(Forza @ 1.12.2004, 21:43)
А не можешь ли ты показать, как зарегистрировать один обработчик события (например, onfocus) для всех input type=text в форме/документе?


Если применять только оф. метод - то только так:
Код

document.getElementsByTagName("input").addEventListener("focus", myFunction, true);

Но это будет работать и для чекбоксов с радиобаттонами. Нужно писать проверку для них...но я не рекомендую так запариваться 8)

ЗЫ: можно проще: document.getElementsByTagName("input").onfocus = myFunction;

Еще тебе может быть полезна такая вещь:
Код

function registerEvent(evt) {
 evt = (evt) ? evt : ((window.event) ? event : null )
 if (evt) {
   var target = (evt.target) ? evt.target : ((evt.scrElement) ? evt.srcElement : null )
   if (target && target.tagName && target.tagName.toLowerCase() == "input") {
       // обработываем, если ЕСТЬ событие, и элемент, с которого
       // это событие пришло - <input ...>
   }
 }
}


Тут же можно и обращаться к имени объекта (target && target.tagName && target.tagName.toLowerCase() == "input")

Автор: Aliance 4.1.2005, 22:51
Цитата(Forza @ 1.12.2004, 21:43)
Этот обработчик должен уметь обращаться к параметрам этого текстового поля: в частности к его name.

Хм...врятли...к id можно точно, к name`у не видел/пробовал.

Автор: Sardar 5.1.2005, 00:44
Цитата(Aliance @ 4.12.2004, 20:47)
ЗЫ: можно проще: document.getElementsByTagName("input").onfocus = myFunction;

Aliance проверяй свой код smile
Выборка даст список нод, у которого ты создаш новое свойство. Теперь имеем интерсный список, а ноды в нём содержащиеся остаются без изменений smile

Forza открывай новый топик. Если хочешь зарегистрироватьобработчика события(сделать что угодно) для всех инпутов на странице, тогда выбери их: document.getElementsByTagName("INPUT"), затем пробегись циклом.
Иначе обращайся к формам: document.forms.твоя_форма.elements - тоже пробегаемся циклом.
Выбрать любой атрибут включая name можно через node.getAttribute("name"), хотя согласно DOM1 html элементы имеют свой расширенный интерфейс, например инпуты имеют свойство name: alert(инпут.name);

Еще раз повторю: Forza открывай новый топик smile

Автор: Иль 21.4.2005, 19:34
Цитата(Sardar @ 21.10.2004, 22:30)
span_tag.onmyevent=new Function("event", myev); //создаем функцию

Явное создание объекта типа function здесь видимо необходимо, да? Чтоб висело постоянно?

Автор: Sardar 23.4.2005, 17:02
После разделения темы ответ перекочевал сюда: http://forum.vingrad.ru/index.php?showtopic=49609

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)