Как использовать JavaScript для захвата событий клика из нескольких форм - PullRequest
0 голосов
/ 07 января 2011

На странице будет 0-10 форм.Каждый позволит пользователю голосовать за содержание этой формы.Как использовать javascript для захвата событий щелчка для этих различных форм и возврата содержимого в область определенной формы.Если я динамически генерирую идентификаторы для форм, как мне учесть это в javascript?

Ответы [ 3 ]

1 голос
/ 07 января 2011

Если вы используете библиотеку jQuery JavaScript, вы можете присоединить одну и ту же функцию ко всем формам за один раз и получить ссылку на форму внутри функции обратного вызова.Например, если вы ожидали, что пользователь отправит форму для отправки запроса AJAX, вы можете сделать это:

// `$('form')` selects all the forms on the page
// `.submit();` will call a function when the submit event is fired on all forms
$('form').submit(function() {
    // Store a reference to this form
    var $thisForm = $(this);

    $.ajax({
        ...
        success: function() {
            // do something with the $thisForm variable which is still in scope.
        }
    });
});
0 голосов
/ 07 января 2011

Судя по вопросу, похоже, что вы хотите делегирование событий.Если вы говорите только о событиях щелчка, они всплывают, так что вы можете использовать один обработчик из тела, которое делегирует обработчику.Однако события изменения не всплывают в IE, поэтому вы не можете этого сделать (не пытаясь перехватить их в фазе захвата в IE)

Я буду использовать jquery, поэтому мне не нужно беспокоиться о перекрестномпроблемы с браузером, в противном случае ответ будет в 10 раз длиннее.Если вы не можете использовать jquery, вам придется разобраться с кросс-браузерным безумием и реализовать его самостоятельно.У большинства фреймворков есть утилиты, которые делают то же самое

<form id='dynamic-123' class='songs'> ---- </form>
<form id='dynamic-681' class='events'> ---- </form>

$(document.body).delegate("form", "click", function(e) {
  // This handler will be called when a click is detected within any form.
  // You'll have to use e.target to figure out which form it was. I would
  // add class attributes to the forms that let you respond differently based on 
  // form was clicked.
});
0 голосов
/ 07 января 2011

Я не уверен, что именно вы хотите.

как насчет назначения события onclick при создании идентификаторов.

x.id = idname ; 
x.onclick = func(idname)

и затем func решает, что делать на основе идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...