переопределение формы отправки события с помощью jquery (1.3.2) - PullRequest
0 голосов
/ 23 июля 2010

Я не могу найти решение для этого, мне нужно переопределить предыдущий установленный обработчик события submit.В моем примере у меня есть страница iframe с собственной отправкой (которая может содержать ошибки проверки и возвращать false).Итак, мне нужно сделать:

$('<iframe></iframe>')
    .load(function() {
       content = $(this).contents()
       form = content.find('form')
       previous_form_submit = .... //This is my question
       form.unbind("submit")
       form.submit(function() {
           var valid = previous_form_submit()
           if (valid) {
             $.post(form.attr('action'), form.serialize(), function(data) {
                //do something
            })
        })
     })

Редактировать: чтобы быть более понятным, проблема переопределить событие, но без потери предыдущего обработчика с проверкой.

Edit2: I 'Я использую jquery 1.3.2

Я собираюсь найти другое решение, но мне было любопытно, как это можно сделать.

Спасибо.

1 Ответ

1 голос
/ 23 июля 2010

Обработчики событий хранятся в хранилище данных элемента расширения, доступном по .data(), в данном случае .data('events') для обработчиков событий, затем вы делаете .submit для связанные обработчики отправки, .click для кликов и т. д.


Версия jQuery 1.4+:

Если бы у формы был один обработчик отправки, она бы выглядела так:

var oldHandler = form​​​​​​​​.data("events").submit[0].handler;

В противном случае вам нужно перебрать их, используя $.each(), например:

$.each(form.data("events").submit, function(i, h) {    
  var handler = h.handler;
  //do something with handler
});

jQuery 1.3.x версия:

Использование $.each(), например:

$.each(form.data("events").submit, function(i, h) {    
  var handler = h;
  //do something with handler
});

Лучше всего зацикливаться здесь, так как индексы не очищены. Обработчик может быть не первым элементом, поэтому .submit[0] может быть undefined, даже если является обработчиком.

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