2010-02-14 99 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