2011-05-06 94 views
0

我想寫一個腳本,將提交所有單個頁面上的單個窗體。 我從計算表單數量開始,然後使用該計數我遍歷每個表單並提交它。Javascript動態表單提交

在PHP頁面的每個形式是這樣寫這樣:

<form name="order_driver_'.$j.'" class="order_container" id="save_'.$j.'"method="post" action="../scripts/order_driver_save.php"> 

然後我用JavaScript來計算每一個,並提交:

function count_form(){ 

    //Count the amount of outputs 
    var count = $(".order_container").size(); 

    //Run loop for reults 
    for(count=count;count>0;count--){ 

     //var save='order_driver_'+count; 

     document.order_driver+count.submit(); 

    } 
} 

我的問題是,在提交部分:

document.order_driver_ + count.submit(); 

我不能連接的var count.order_driver_

我想知道如何做到這一點,所以我可以指定每個表單名稱在循環中提交。

+0

可以略微簡化環路與:'爲(;計數> 0; count--){' – 2011-05-06 03:04:32

+0

歡呼的! – 2011-05-06 03:37:50

回答

1

如果您希望他們都提交,您將不得不通過AJAX提交它們,因爲只要提交了一個,瀏覽器就會按照請求並刷新頁面。所以即使你把它連接起來,它也只會提交第一個。

UPDATE

雖然我知道我可能會被建議你爆頭使用jquery,我想在這種情況下,它大大簡化你需要做什麼。

如果您使用jQuery,此代碼將實現您的目標。

// #submit-click being whatever you want to initiate the mass form submit 
$('#submit-button').click(function() { 
    $('form').submit(); 
}); 

//form submit event handler 
$('form').submit(function() { 
    //get the form and serialize it's data 
    var form = $(this); 
    var data = form.serialize(); 

    //submit via AJAX 
    $.post(form.attr('action'), data); 

    //prevent the default action of submit 
    return false; 
}); 

注意,您將不會收到確認,表示它們已提交。

+0

乾杯jondavidjohn。 – 2011-05-06 03:02:29

+0

已更新,提示jquery和示例代碼。 – jondavidjohn 2011-05-06 03:13:32

+0

乾杯。我很困惑。如何循環提交每個表單?它是否應該包含在for語句中? – 2011-05-06 04:00:52

1

注意:您必須使呼叫彼此分開,否則頁面將移至提交的目標。 Ajax調用或使目標位於新窗口中。

更改它來獲得元素,並提交該元素:

function count_form(){ 

//Count the amount of outputs 
var count = $(".order_container").size(); 

//Run loop for reults 
for(count=count;count>0;count--){ 

    //var save='order_driver_'+count; 

    document.getElementById("order_driver_" + count).submit(); 



} 
} 
+0

+1:回答他的問題,但不幸將我們帶到了他真正問題的癥結:一次提交多個表單。 – 2011-05-06 03:02:47