2012-03-03 41 views
2

2つのフォームと1つの送信ボタンを含む1つのPHPページがあります。この1つのボタンで両方のフォームを送信したいです。私のコードは完全に動作しますが、各フォームのみ1フィールドが正常に送信されました。以下は私のHTMLとJavaScriptのコードで、私はエラー複数のフォームをjavascriptで送信する

2 HTMLフォーム

<form name="form"> 
     <input type="text" name="a" value="a"> 
     <input type="text" name="b" value="b"> 
</form> 
<form name="form"> 
     <input type="text" name="c" value="c"> 
     <input type="text" name="d" value="d"> 
</form> 

<input type="submit" name="Submit" id="button" value="Submit" onClick="submitAllDocumentForms()"> 

Javascriptコード

<script language="javascript" type="text/javascript"> 
/* Collect all forms in document to one and post it */ 
function submitAllDocumentForms() { 
var arrDocForms = document.getElementsByTagName('form'); 
var formCollector = document.createElement("form"); 
with(formCollector) 
{ 
method = "post"; 
action = "test.php"; 
name = "formCollector"; 
id = "formCollector"; 
} 
for(var ix=0;ix<arrDocForms.length;ix++) { 
appendFormVals2Form(arrDocForms[ix], formCollector); 
} 
document.body.appendChild(formCollector); 
formCollector.submit(); 

} 
/* Function: add all elements from ``frmCollectFrom´´ and append them to ``frmCollector´´ before returning ``frmCollector´´*/ 
function appendFormVals2Form(frmCollectFrom, frmCollector) { 
var frm = frmCollectFrom.elements; 
for(var ix = 0 ; ix < frm.length ; ix++) 
frmCollector.appendChild(frm[ix]); 
return frmCollector; 
} 
</script> 

を持っているところplzは提出された値

<?php 
echo $_POST['a']; 
echo $_POST['b']; 
echo $_POST['c']; 
echo $_POST['d']; 
?> 
をエコーするために私のPHPコードを教えてください

答えて

2

appendChild()は、フォームから要素を取り除いて、01を変更します配列とその長さ。これを避けるには、たとえば次のようにします。変数の要素の数を格納し、最後の要素から始まる要素の配列を処理します。

var frm = frmCollectFrom.elements; 
var nElems = frm.length; 
for(var ix = nElems - 1; ix >= 0 ; ix--) 
    frmCollector.appendChild(frm[ix]); 
+0

素晴らしい、その作業は完全に、感謝百万 – Arif

関連する問題