2014-09-01 86 views
0

我有一個窗體,您可以自動生成額外的表單框並將它們發送到PHP腳本handeled。因爲我對JavaScript非常糟糕,而且我在遇到以下問題。發送JavaScript生成的texbox值與表單(GET)到PHP腳本

當表格填寫完成後,我可以看到網址上的所有內容都已填寫,除了用JS創建的框(每個框都有唯一的名稱!)。我的猜測是JS生成的字段從表單標籤中刪除,但無法弄清楚如何解決這個問題。如果有人能給我指點或者告訴我如何解決這個問題,我將不勝感激。爲了清晰起見,我縮短了代碼(如果有問題留給我,請告訴我)。如果有人想知道爲什麼我不使用表單操作。 It's因爲Drupal的嘗試將網站轉發到錯誤的地方,如果我這樣做(驚訝,不太好使用Drupal之一:d)

<?php 
require_once('customer.php'); 
?> 

     <script type="text/javascript"> 
     var intTextBox=0; 

     //FUNCTION TO ADD TEXT BOX ELEMENT 

     function addElement() 
     { 
     intTextBox = intTextBox + 1; 
     var contentID = document.getElementById('content'); 
     var newTBDiv = document.createElement('div'); 
     newTBDiv.setAttribute('id','strText'+intTextBox); 
     newTBDiv.innerHTML = "<div class='product'><tr><td>Sku/ID: "+intTextBox+": <input type='text' name='sku_" + intTextBox + "'/></div>"; 
     contentID.appendChild(newTBDiv); 
     } 

     function removeElement() 
     { 
     if(intTextBox != 0) 
     { 
     var contentID = document.getElementById('content'); 
     contentID.removeChild(document.getElementById('strText'+intTextBox)); 
     intTextBox = intTextBox-1; 
     } 
     } 

      </script> 
     <table> 
     <form name="activate"> 
     <div class='cu'> 
     <tr><td>Sku/ID (oma): <input type="text" name="sku"></td> 
     <td><p><a href="javascript:addElement();" >Add product</a> 
     <a href="javascript:removeElement();" >Remove product</a></p></td></tr> 
     <div id="content"></div> 
     </div> 
    <tr> <td><input type="submit" value="Submit"></td> </tr> 

    </form> 




    Customer.php 
     <?php 

     if(isset($_GET["sku_1"])) 
     { 
     echo "found it"; 
     } 
     else 
     echo "did not find it"; 

    ?> 

任何幫助,將不勝感激!

+0

將方法更改爲Post,但仍然沒有從JS生成的框(原始框工作正常) – user1054844 2014-09-01 12:18:03

+1

您可以使用jQuery嗎?表單標籤不會讀取動態添加的輸入。 – Erevald 2014-09-01 12:19:57

+0

好吧,這就是原因。那麼我沒有太多的選擇,但嘗試使用jQuery然後。感謝您的答案,這解釋了很多:) – user1054844 2014-09-01 12:29:11

回答

0

你可以動態地改變形式代碼的網址,包括文本框的值:

var textboxes = document.getElementsByTagName("input"); 
for (var i = 0; i < textboxes.length; i++){ 
    var data = "?"; 
    if (textboxes[i].type == "text") { 
     data += (data == "?" ? "" : "&") + textboxes[i].name + "=" + textboxes[i].value; 
    } 
} 
form.action += data; 

我沒有測試過這一點,你可能需要動態地添加的所有元素

[更新] 如果如果你還沒有使用絕對路徑,你可能會遇到問題。