将具有相同名称的多个输入值分配给其他隐藏输入

时间:2013-10-08 10:37:25

标签: php jquery html

我正在研究两种形式。我基本上做的是从一个表单中获取值并将其分配给另一个表单输入字段。第二种形式隐藏了所有字段,因为我只需要保存所有选择和分配的数据,然后使用提交按钮,我将提交隐藏的表单并获取$ _post中的所有值

让我在下面更清楚地说明包含我分配给隐藏表格的数据的tr。

  <tr>
        <td align="center"><input type="text" name="name" id="spocName"></td>
  </tr>

  <tr>
        <td align="center"><input type="text" name="name" id="spocName"></td>
  </tr>

  <tr>
        <td align="center"><input type="text" name="name" id="spocName"></td>
  </tr>
  .
  . 
  .

这些tr基本上发生的事情是当页面加载时只有tr,但是用户有一个按钮来添加更多行,并且每次点击时他都可以添加一行到任意数量的行,并且一旦填充了名称字段然后按保存按钮,输入数据以隐藏形式(第二种形式)分配给输入字段。

  $(elemnt).each(function(index, element) {         
        $('#spc-name').val($("#spocName").val());
    }); 

在上面的代码中$('#spc-name')是隐藏形式的输入字段的id,$(“#spocName”)是第一种形式的输入字段的id。一旦分配了值,用户就会有另一个按钮来提交隐藏的表单。一旦表单提交它保存数据在数据库中,但在这里我现在讨论的问题和问题是,我所做的只是单个tr工作正常,但我需要一个通用代码,以便我可以在数据库中插入多个记录。

当我print_r $ _post我得到了这个,虽然我输入了多个记录,但我得到的只有第一个

  Array
 (    
    [spc-name] => one    
 )

但我期待的是

Array
(    
    [0] => Array
    (    
    [spc-name] => one    
    )
    [1] => Array
    (    
    [spc-name] => two    
    )
    [2] => Array
    (    
    [spc-name] => three    
    )
    . 
    .
    . 
    .      

 )

我不知道在哪里更改我的代码或者需要循环放置它的位置。所以,我需要你的帮助

我尽力解释它,但如果仍然不清楚我可以编辑我的问题,以便我的问题变得更清楚。提前谢谢

2 个答案:

答案 0 :(得分:2)

使用name作为这样的数组。

<input type="text" name="name[]" id="spocName">

也不要尝试为多个元素提供相同的id。它必须是唯一的。

答案 1 :(得分:0)

您可以使用如下所示的数组。

<tr>
    <td align="center"><input type="text" name="names[]" class="spocName"></td>
</tr>

使用javascript,您可以添加更多行,但所有名称都为names[]。在PHP中提交表单后,您将执行以下操作:

<?php
$names = $_POST['names'];
foreach($names as $name){
   echo $name;
}
?>

<强>更新

注意:如果您有多个使用相同名称的元素,则应使用CLASS而不是ID

使用jQuery,执行以下操作:

$('.spocName').each(function(){
    //get the value of the table row field
    var formValue = $(this).val();
    //now, create a new hidden input
    var hiddenForm = '<input type="hidden" name="hiddenNames[]" value="'+formValue+'">';
    //append the new hidden input to your hidden form
    $('div#hiddenForm').append(hiddenForm);
});

以上假设您的DIV标识为hiddenForm,您可以在其中隐藏输入字段。