2009-08-10 5 views
0

Я использую JQuery с плагином Boxy.jquery with boxy plugin - загрузить и отправить форму через ajax

Когда пользователь нажимает на ссылку на одной странице, я вызываю Boxy.load для загрузки формы во всплывающее окно. Форма загружается и отображается внутри всплывающего окна без проблем.

Однако я не могу привязать форму к событию отправки, так как я не могу выбрать элемент формы.

Это обработчик события:

$('#flag-link a.unflagged').click (function(e) { 
     url = $(e.target).attr('href'); 
     Boxy.load(url, {behaviours: function(r) { 
      alert ($("#flag-form").attr('id')); 
      } 
     }); 
    }); 

Предупреждение гласит: «не определено», когда он появится.

И это форма:

<form id="flag-form" method="POST" action="somepage">   
    <table> 
     <tr><td><input type="text" name = "name"></td></tr> 
     <tr><td><input type="submit" value="OK"></td></tr> 
    </table> 
</form> 

Что я делаю неправильно?

ответ

1

Насколько я понимаю, live() метод должен быть использован для привязки элемента к событию, в этом случае:

$("#flag-form").live("submit", function(){ ... } 

В настоящее время живой метод документируется быть не поддерживая представить событие. Однако я мог бы работать с Chrome и FF. С другой стороны, я не мог заставить его работать в IE. Лучшим способом для совместимости с несколькими браузерами, похоже, является привязка кнопки отправки формы к событию click.

$("#flag-form-submit").live("click", function(){ 
1

Первый (незначительная точка, но потенциальный источник проблем), он должен быть id="flag-form" не id = "flag-form" (без пробелов).

Во-вторых, вам не нужно r.find(). Просто сделайте $("#flag-form").attr("id")

+0

+1 - Избиение меня. Просто пришлось отбросить те же самые два момента. – karim79

+0

Спасибо. r.find() является одним из многих способов, которыми я пытался выбрать форму. К сожалению, проблема остается. – shanyu

0

я узнал, что объявляя методы behaviours: function (e) {} работ, в дополнение к использованию живой() методы.

т.д .:

$('#flag-link a.unflagged').click (function() { 
    Boxy.load(this.href, { 
     behaviours: function(r) { 
     r.find('#flag-form').bind('submit', function() { 
      // do on submit e.g. ajax calls etc. 
     }); 
     } 
    }); 
    return false; 
}); 
0

Boxy открывает URL (url = $(e.target).attr('href');) в качестве фрейма. Таким образом, вы не можете найти форму на начальной странице (родительская страница). Ваш код для привязки формы должен находиться на дочерней странице (например, Boxy iframe). Вы можете проверить URL-адрес iframe, используя свой код, url = $(e.target).attr('href');

Смежные вопросы