2012-08-08 57 views
0

我需要能夠爲多個表單提交一個提交按鈕。爲了簡單起見,我只用了兩種形式。每種表格都有自己獨特的ID,但每種表格都非常相同,只是存在一些差異。我的問題是隻有第一種形式提交成功。我意識到這是因爲我的輸入字段在每個表單中都有相同的名稱,所以它當前不會識別重複的輸入字段。是否有一種方法可以成功提交每個字段,即使輸入字段是相同的,我希望通過幫助我可以提交'input_1'值並將其處理爲'form1:input_1'和'form2:input_1 ' 分別。 非常感謝你提前javascript:提交表單和處理

 <body><form name="form1"> 
    <input type="hidden" name="formID" value="form2"/> 
    <input type="hidden" name="redirect_to" value=""/> 
    <INPUT TYPE=TEXT NAME="input_1" SIZE=10 /> 
    <INPUT TYPE=TEXT NAME="input_A" SIZE=15>/<INPUT TYPE=TEXT NAME="input_C"style="width: 1em" maxlength="1"><sup>s</sup> 

    <INPUT TYPE=TEXT NAME="input_B" SIZE=10 /> 
    <INPUT TYPE="button" VALUE="+" name="SubtractButton" onkeydown="CalculateIMSUB(this.form)"> 
    <INPUT TYPE=TEXT NAME="Answer" SIZE=12> 
    <input type="hidden" name="val" value="298" /> 
    <INPUT TYPE=TEXT NAME="Answer_2" SIZE=4></form> 

    <form name="form2"> 
    <input type="hidden" name="formID" value="form2"/> 
    <input type="hidden" name="redirect_to" value=""/> 
    <INPUT TYPE=TEXT NAME="input_1" SIZE=10 /> 
    <INPUT TYPE=TEXT NAME="input_A" SIZE=15>/<INPUT TYPE=TEXT NAME="input_C"style="width: 1em" maxlength="1"><sup>s</sup> 

    <INPUT TYPE=TEXT NAME="input_B" SIZE=10 /> 
    <INPUT TYPE="button" VALUE="+" name="SubtractButton" onkeydown="CalculateIMSUB(this.form)"> 
    <INPUT TYPE=TEXT NAME="Answer" SIZE=12> 
    <input type="hidden" name="val" value="298" /> 
    <INPUT TYPE=TEXT NAME="Answer_2" SIZE=4></form> 
    <input type="submit" name="Submit" id="button" value="Submit" onClick="submitAllDocumentForms()"></body> 

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 = "process.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; 
    var nElems = frm.length; 
    for(var ix = nElems - 1; ix >= 0 ; ix--) 
    frmCollector.appendChild(frm[ix]); 
    return frmCollector; 
    } 
    </script> 

回答

0

名稱不是表單標籤的標準屬性。我建議你用id來識別你的表格。

我沒有測試過下面的變化,但我希望他們的工作:

function appendFormVals2Form(frmCollectFrom, frmCollector) { 
    var currentEl; 
    var frm = frmCollectFrom.elements; 
    var nElems = frm.length; 
    for(var ix = nElems - 1; ix >= 0 ; ix--) { 
     currentEl = frm[ix]; 
     currentEl.name = frmCollectFrom.name + ':' + currentEl.name; 
     frmCollector.appendChild(currentEl); 
    } 
    return frmCollector; 
} 
+0

非常感謝您的幫助,雖然我收到了一條錯誤消息「未定義指數:用C formID:\ XAMPP \ htdocs \ php_test \當我插入更改時,第13行的新文件夾\ process.php。您可以在下面的鏈接中找到我的流程腳本。我可以對處理腳本進行哪些更改以允許顯示所有字段? http://jsfiddle.net/rDaeE/1/ – 2012-08-09 01:20:17

+0

對不起,我不知道。我不是很熟悉php。 – 2012-08-09 01:30:08