2011-09-01 83 views
2

我已經使用.load()將幾個表單加載到不同的DIV中。加載的文件如下例所示。使用jQuery .submit()檢索提交表單的ID和/或名稱

<div id="block_id-299"> 
<div id="content"> 
<form name="form1 method="post"> 
<input type="submit" name="field1" value="Submit" /> 
</form> 
</div> 
</div> 

,現在我試圖檢索提交的表單的名字,後來,它的使用.serialize()值。 我正在使用$('form').submit(function(){ ... },但由於我動態加載表單,這不再工作。

任何幫助?

PS:事件可以使用$(document).submit(function(){捕獲,但如何獲取表單的名稱和/或ID?

回答

8

你可以用$做()代表:

$(document).delegate('form', 'submit', function(event) { 
    var $form = $(this); 
    var id = $form.attr('id'); 
    var data = $form.serialize(); 
    // ... 
}); 

這個工程即使在添加表格你叫委託後()。

這可以通過偵聽submit事件冒泡達到document,並通過測試是否源自form元素。

這與$('form').live('click', ...)類似,但最初並不執行選擇器。

請參閱.delegate().live()文檔。

+0

有沒有辦法讓提交的按鈕的名稱和值呢? – pnm123

+0

試試'$(document).delegate('表單按鈕,表單提交','點擊',...' – arnaud576875

0

您可以使用jQuerylive事件處理程序,它也適用於動態創建的元素。 試試這個

$('form').live('submit', function(event) { 
    var $form = $(this); 
    var formName = $form.attr('name'); 
    var formData = $form.serialize(); 
    // ... 
}); 
+0

感謝您的回答,但這是導致錯誤。 – pnm123

0

下面的代碼將提醒其「create_btn」 CSS按鈕的形式ID,您也可以通過ID,如果你想改變(.create-BTN)訪問點哈希(# create-btn),您可以使用.click或.submit來代替。

<script type="text/javascript"> 
    $(document).ready(function() { 

    $('.create-btn').click(function(){ 
     alert(this.form.id); 

     }) ; 

    }); 
1

要在提交表單時獲取表單屬性,我們也可以使用submit函數。例如:

$("form").submit(function(){ 
    var form = $(this); 
    var id = form.attr('id'); 
    alert(id + ' form submitted'); 
});