2014-09-01 87 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; 

我没有测试过这一点,你可能需要动态地添加的所有元素

[更新] 如果如果你还没有使用绝对路径,你可能会遇到问题。