LINUX.ORG.RU

Можно в одном месте задавать обработчики событий для виджетов формы?


0

0

Здравствуйте!

Проблема такая --- будут формы произвольной сложности, так чтобы не писать в каждом виджете <button id="but1" onclick="" onmouseover="" onmouseout="" /> и т.д., хотелось бы поиметь какое-нибудь средство по аналогии с CSS для стилей (назначение обработчиков всем виджетам формы через JavaScript рассматривается как неоптимальное и неизящное решение). То есть где-нибудь однажды прописано, что для всех кнопок обрабатываются одним обработчиком события onclick и можно смело добавлять сотни кнопок, не беспокоясь о явном описании обработчиков.

Извините за сумбур.

Заранее благодарен!

★★★★

посмотри jQuery, похоже это то что тебе надо

anonymous
()
Ответ на: комментарий от volh

>у всех кнопок может быть class="button". Дальше продолжать?)

Продолжай. В CSS я не нашёл свойств (да и свойства там --- поля в style объекта виджета)

Ay49Mihas ★★★★
() автор топика
Ответ на: комментарий от volh

PS: чувствую, что где-то рядом, но не могу уловить...

Ay49Mihas ★★★★
() автор топика

Ну и что? Понамекали и будя? Скажите, в какую сторону копать.

Ay49Mihas ★★★★
() автор топика
Ответ на: комментарий от it-partizan

>Думаю это то, что ты искал. Правда на английском, если что

Спасибо! Но, по-моему, не то. Пока просто пробежал.

Короче, у меня такая задачка. Есть произвольная форма на XUL. На основе этой формы нужно сделать server-side обработчики событий виджетов. Сделать их не проблема, связать тоже (AJAX), а вот как эти события формировать? Либо явно прописывая в виджетах onclick="send_event('click',this)" либо допустим в onLoad привязку объекту события onclick. То есть, всё равно средствами JavaScript. А по-другому нельзя? Ведь форма у меня не бует формироваться программно, она делается в дизайнере и к ней дописываются обработчики.

Ay49Mihas ★★★★
() автор топика
Ответ на: комментарий от Ay49Mihas

Ну на сколько я понял проблему, сделать так, как ты хочешь вряд ли получится.

Мне видится наиболее подходящим решение с привязкой к событиям при загрузке страницы, не прописывая ничегов самих виджетах (замучаешся с поддержкой всего этого!) кроме их id.

Если нет своего велосипеда, то можно посмотреть в сторону Prototype или jQuery (о ней уже упоминали тут). Отличаются они в основном принципами обработки событий.

it-partizan
()
Ответ на: комментарий от Ay49Mihas

я имел в виду что-то вроде document.getElementsByClassName("myclass"); и привязывания onclick, может быть с тем же event-listener из prototype или другого фреймворка, если виджеты создаются динамически, но вижу что это все-таки не то. прошу прощения. имхо или js или ручками

volh ★★
()
Ответ на: комментарий от volh

Спасибо! Значит, не туплю, и действительно придётся неизящным способом работать.

Ay49Mihas ★★★★
() автор топика

Имхо единственный способ взять нужные элементы, пробежаться по ним циклом и повесить обработчики, можно юзать js фреймворки. Например в prototype это будет выглядеть примерно так:

$$('button').each( function(button) {
  Event.observe(button, 'click', function() {
    alert(1);
  }.bindAsEventListener(this));
}

PartyZan ★★★
()

Эм... Вообще-то, события имеют тендецию всплывать. Теоретически можно навесить onclick даже на body.

Miguel ★★★★★
()
Ответ на: комментарий от PartyZan

> Например в prototype это будет выглядеть примерно так

Prototype фтопку, на jQuery это будет вдвое короче. =)

$('.button').click(function() {
    alert(1);
})

ero-sennin ★★
()
Ответ на: комментарий от Miguel

>Эм... Вообще-то, события имеют тендецию всплывать. Теоретически можно навесить onclick даже на body.

Ну, меня родители не интересуют. Если window будет реагировать на нажатие кнопки мыши как button, но по всей площади, то ничего хорошего не получится.

Ay49Mihas ★★★★
() автор топика
Ответ на: комментарий от Ay49Mihas

Дык событие несёт в себе информацию о том, чьё это событие. Отфильтруй, тоже мне проблема.

Miguel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.