2010-02-14 2 views
1

Я использую плагин jquery form для форм-под форм на моей странице, и он отлично работает.JQuery форма плагина. Проблемы с отправкой загруженной формы

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

Это мой код:

$(document).ready(function() {     
    //shows loading screen whilst posting via ajax 
    $().ajaxStart($.blockUI).ajaxStop($.unblockUI); 

    //post form add_customer ajax 
    var options = { 
    target: '#alert', 
    }; 
    $.ajaxSettings.cache = false; 
    $('#add_customer').submit(function() { 
    $(this).ajaxSubmit(options); 
    return false; 
    }); 

    $('#theform').hide().load('form.php', function() { 
    $(this).fadeIn(); 
    return false; 
    }); 
}); 

Что мне не хватает? не может найти решение нигде.

+0

Это будет очень полезно, если вы уточните, что означает «это не работает». Есть ли ошибка в Javascript на клиенте? Ошибка сервера? Ничего не происходит вообще? Что вы сделали до сих пор, чтобы исследовать и диагностировать, что происходит? – Pointy

ответ

0

Если у вас есть яваскрипт код в файле form.php и принести его с помощью $.load(), то весь код JS будет раздел и вы только получите HTML часть.

Используйте $.get, чтобы загрузить всю страницу, включая js-код.

$.get('form.php', 
     {}, 
     function(data){ 
     $('#theform').html(data).fadeIn(); 
     }); 

Теперь все JS код в form.php будет запущен после того, как он будет загружен и добавлен в #theform области.

+0

Отлично. Вы сделали мой день, большая улыбка на моем лице! – user272899

0

Является ли форма с идентификатором 'add_customer` внутри HTML-кода, загруженного из form.php? Если это так, то привязка метода отправки, к которому вы применяете, происходит до того, как элемент будет доступен. Чтобы исправить это переместить метод привязки внутри обратного вызова нагрузки:

$(document).ready(function() {     
    //shows loading screen whilst posting via ajax 
    $().ajaxStart($.blockUI).ajaxStop($.unblockUI); 

    $('#theform').hide().load('form.php', function() { 
    //post form add_customer ajax 
    var options = { 
     target: '#alert', 
    }; 
    $.ajaxSettings.cache = false; 
    $('#add_customer').submit(function() { 
     $(this).ajaxSubmit(options); 
     return false; 
    }); 

    $(this).fadeIn(); 
    return false; 
    }); 
}); 
+0

Да, он находится внутри загруженного HTML-кода. Перед отправкой формы, form.php загружается. Как мне переместить метод привязки внутри обратного вызова загрузки? – user272899

+0

@ user272899 Вот что я сделал в своем примере кода выше, просто используйте это. – nortron

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