2010-02-14 59 views
1

我一直在使用jquery表单插件来在我的页面上创建子表单,并且它工作得很好。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一个JavaScript代码和使用$.load()取水的时候,那么所有的JS代码将被剥夺,你将只能得到HTML部分。使用加载整个页面,包括js代码。

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

现在,它加载并添加到#theform区域后form.php所有的JS代码将运行。

+0

非常好。你让我的一天,我的脸上露出灿烂的笑容! – user272899

0

从form.php中加载的HTML内部的表单是否为'add_customer`?如果是这种情况,那么您应用的提交方法绑定发生在元素可用之前。要修复它移到你的方法结合负载回调的内部:

$(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