2009-08-24 119 views
0

我正在使用這個插件:http://malsup.com/jquery/form/#getting-startedajax/jquery的多種形式?

我有問題,讓它在頁面上同時提交(使用單個函數)多個表單,並使其更加複雜,我正在加載通過ajax從一個遠程html調用的形式。所以表單函數需要重新加載。

的問題是如何使用(如果可能的話),可重複使用的功能,可以在同一時間提交多份表格。

回答

2

可能你可以使用LiveQuery該問題的插件。它可以工作就像例如

<button ... rel="formId"/> 
jQuery(".formButton").livequery("click",function() { 
    var formId=jQuery(this).attr("rel"); 
    jQuery("#"+formId).ajaxSubmit(); 
} 

因此,與類.formButton按鈕可以包括在服務器響應,並用的liveQuery它也被處理。 希望它有幫助。 對不起,我的英文。

+1

請注意閱讀此答案的任何人... jQuery現在有一個將事件偵聽器綁定到動態DOM節點的$ .live()函數。不需要插件來做到這一點。 – 2010-03-23 01:34:20

0

的jQuery插件添加事件偵聽到您指定的形式(S)的onsubmit事件。因此,爲了在同一時間提交多份表格,你需要調用提交各種形式的活動功能。類似這樣的:

function doubleSubmit(e) { 
if (e.target.id == 'form2') { 
    $('#form1').submit(); 
    } else { 
    $('#form2').submit(); 
    } 
} 

下一個技巧是在任一表單提交時調用此函數。我會做這樣的事情:

$("#form1").bind("submit", doubleSubmit); 
$("#form2").bind("submit", doubleSubmit); 

我還沒有測試過這段代碼,但它應該給你的一般想法。

+0

我不相信這會工作。這會不會只是提交「他者」的形式,因爲一個回傳會發生,並取消了其他? – 2009-08-24 13:52:20

0

你不能一次提交多個表單。但是,你可以依次提交他們

function submitFn() { 
$('form').each(function() { 
$.post(url, data, function() { 
... 

} 
return false; 
});} 

,並添加監聽器:

$('form').bind('submit', submitFn); 

返回錯誤是很重要的表兄弟姐妹,如果你沒有它遂以第一種形式將提交兩次

0

標識大概去這樣的事情:

// after you import the html 
$("#form1, #form2").bind("submit", submit); 
// or simply 
$("form").bind("submit", submit); 

function submit() { 
    /// a $.post implementation selecting all the controls and passing them as data 
    return false; // to prevent an actual browser submit 
}