无法从javascript创建的其他文本框中收集数据

Unable to collect data from additional textbox created by javascript

本文关键字:数据 文本 其他 javascript 创建      更新时间:2023-09-26

我正在尝试收集在表单中用div包装的文本框中输入的数据。我正在使用会话收集通过提交按钮传递的数据数组。然而,它只捕获第一行数据。我认为javascript创建的文本框中输入的数据无法识别?

HTML条目1

   <input type="text" name="myInputs_d[]" size='5' style='margin:4px;'>D(mm)
   <input type="text" name="myInputs_d1[]" size='5' style='margin:4px;'>D1(mm)
   <input type="text" name="myInputs_bags[]" size='5' style='margin:4px;'>Bags
   <input type="text" name="myInputs_carton[]" size='5' style='margin:4px;'>Cartons
    </div>
    <input type="submit" value="submit" name="submit">
    </form>    
  <input type="button" value="Add another text input"  onClick="addInput('dynamicInput');">

javascript创建多个文本框

<script>
var counter = 1;
var limit = 10;
function addInput(divName){
     if (counter == limit)  {
          alert("You have reached the limit of adding " + counter + " inputs");
     }
     else {
          var newdiv = document.createElement('div');
          newdiv.innerHTML = "Entry " + (counter + 1) + " <input type='text' name='myInputs_d[]' size='5' style='margin:5px;'>D(mm)<input type='text' name='myInputs_d1[]' size='5' style='margin:5px;'>D1(mm)<input type='text' name='myInputs_bags[]' size='5' style='margin:5px;'>Bags<input type='text' name='myInputs_carton[]' size='5' style='margin:5px;'>Cartons";
          document.getElementById(divName).appendChild(newdiv);
          counter++;
     }
}
</script>

Php对输入的所有数据进行回波

$_SESSION['myInputs_all'][]=array($_POST["myInputs_d"],$_POST["myInputs_d1"],$_POST["myInputs_bags"],$_POST["myInputs_carton"]);
print_r($_SESSION['myInputs_all']);
foreach ($myInputs_all  as $eachInput) 
{
  echo $eachInput . "<br>";
}

我可能已经输入了三组记录,但当我打印_r($_SESSION['myInputs_all'])时;。。。。。它只显示了第一张这样的唱片。

Array ( [0] => Array ( [0] => 10 ) [1] => Array ( [0] => Array ( [0] => 10 ) [1] => Array ( [0] => 10 ) [2] => Array ( [0] => 20 ) [3] => Array ( [0] => 20 ) )

试用此代码

JavaScript:

var counter = 1;
var limit = 10;
function addInput(divName){
 if (counter == limit)  {
      alert("You have reached the limit of adding " + counter + " inputs");
 }
 else {
    var newDiv = document.createElement('div');
    var stringInput = "Entry " + (counter + 1) + " <input type='text'           name='myInputs_d[]' size='5' style='margin:5px;'>D(mm)<input type='text' name='myInputs_d1[]' size='5' style='margin:5px;'>D1(mm)<input type='text' name='myInputs_bags[]' size='5' style='margin:5px;'>Bags<input type='text' name='myInputs_carton[]' size='5' style='margin:5px;'>Cartons";
    newDiv.innerHTML = stringInput;
    document.getElementById(divName).appendChild(newDiv);
    counter++;
 }
}

您的HTML应该是这样的。(添加表单标签和提交按钮)

<form name="test" method="post" action="">
<div id="dynamicInput">
Entry 1
<input type="text" name="myInputs_d[]" size='5' style='margin:4px;'>D(mm)
<input type="text" name="myInputs_d1[]" size='5' style='margin:4px;'>D1(mm)
<input type="text" name="myInputs_bags[]" size='5' style='margin:4px;'>Bags
<input type="text" name="myInputs_carton[]" size='5' style='margin:4px;'>Cartons
</div>
<input type="button" value="Add another text input"  onClick="addInput('dynamicInput');">
<input type="submit" name="submit" value="Submit"  />
</form>

最后你的php代码应该是这样的:

if( isset($_POST['submit']) ){
$_SESSION['myInputs_all'] = array($_POST["myInputs_d"],$_POST["myInputs_d1"],$_POST["myInputs_bags"],$_POST["myInputs_carton"]);
print_r($_SESSION['myInputs_all']);
echo "<br>";
foreach( $_SESSION['myInputs_all'] as $all_inputs ){
    foreach( $all_inputs as $inputs ){
        echo $inputs.'<br>';
    }
}
}

您的循环没有正确地迭代所有元素,以下是我的建议:

for($i = 0; $i < count($myInputs_all); ++$i) {
    for($j = 0; $j < (count($myInputs_all[$i])-1); ++$j) {
        for($k = 0; $k < 4; ++$k) {
            print "i:$i; j:$j; k:$k";
            print $myInputs_all[$i][$k][$j] . "<br>";
        }
    }
}