jQuery: привязать ajaxForm к форме на странице, загруженной через .load()

Я использую плагин ajaxForm для jQuery для отправки форм в моем веб-приложении. Однако в одной части приложения я загружаю некоторый контент с формой через jQuery .load()

Проблема заключается в том, что я не могу заставить ajaxForm привязываться к форме, загруженной через ajax.

Я пробовал этот код безрезультатно:

 $('#viewRecordBtn').live('click', function() { // Handle the event when the 'view record' button is clicked
    $("#tab2").load('ajax/viewRecord.php'); // Load the record and the form into tab 2
    $('#formAddRecord').ajaxForm(formAddRecordOptions); // Bind the form
 });

Любая помощь ДЕЙСТВИТЕЛЬНО ценится!!


Редактировать: Спасибо, ребята! Это работает отлично.


person Brendan    schedule 05.02.2010    source источник


Ответы (3)


Я думаю, вы должны поместить код привязки в обратный вызов, потому что загрузка асинхронная:

 $('#viewRecordBtn').live('click', function() { // Handle the event when the 'view record' button is clicked
    $("#tab2").load('ajax/viewRecord.php', function() {
                    $('#formAddRecord').ajaxForm(formAddRecordOptions); // Bind the form
               }); // Load the record and the form into tab 2    
 });
person Vivin Paliath    schedule 05.02.2010

Если вы используете последний плагин формы jQuery и jQuery 1.7+, вы можете использовать опцию «делегирование», например:

$('#myForm').ajaxForm({
    delegation: true,
    target: '#output'
});

Это описано здесь: http://malsup.github.com/jquery.form.js

person Marcin Jancewicz    schedule 04.07.2012
comment
Спасибо за простое решение! - person Camilla Horne; 29.06.2014

это потому, что вы привязываете ajaxForm в то время, когда .load() еще не завершено. попробуй это:

$('#tab2').load('ajax/viewRecord.php', function() {
  $('#formAddRecord').ajaxForm(formAddRecordOptions);
});
person Reigel    schedule 05.02.2010