drjtua5953 2014-10-17 02:53
浏览 17
已采纳

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

I'm trying to collect data entered inside textboxes wrapped in div within a form.I'm using session to gather an array of data passed by the submit button. However it only captures the very first row of data. I believe data entered in textboxes created by javascript not recognised?

HTML 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="submit" value="submit" name="submit">
    </form>    
  <input type="button" value="Add another text input"  onClick="addInput('dynamicInput');">

javascript to create multiple textboxes

<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 to echo all the data entered

$_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>";

}

I might have entered three sets of records ,but when I print_r($_SESSION['myInputs_all']);..... it only shows the first record like this.

Array ( [0] => Array ( [0] => 10 ) [1] => Array ( [0] => Array ( [0] => 10 ) [1] => Array ( [0] => 10 ) [2] => Array ( [0] => 20 ) [3] => Array ( [0] => 20 ) )
  • 写回答

2条回答 默认 最新

  • dongyan1491 2014-10-17 03:19
    关注

    Try out this code

    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++;
     }
    }
    

    Your HTML should look like this. ( Add form tag and submit button )

    <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>
    

    and in Last your php code should look like this:

    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>';
        }
    
    }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊