【问题标题】:assign multiple inputs values with same names to other hidden input将具有相同名称的多个输入值分配给其他隐藏输入
【发布时间】:2013-10-08 10:37:24
【问题描述】:

我正在研究两种形式。我基本上在做的是我从一个表单中获取值并将其分配给另一个表单输入字段。第二个表单隐藏了所有字段,因为我需要它来保存所有选择和分配的数据,然后使用提交按钮我将提交该隐藏表单并获取 $_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 个具有相同 id 的 DOM 元素。如果你这样做,你迟早会得到一些错误。

标签: php jquery html


【解决方案1】:

像这样使用名称作为数组。

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

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

【讨论】:

    【解决方案2】:

    您可以使用如下数组。

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

    以上假设您有一个 ID 为 hiddenFormDIV,其中您有隐藏的输入字段。

    【讨论】:

    • 你直接发布第一个表单,但我提到第一个表单只会将值发送到隐藏表单,然后隐藏表单将提交隐藏的值
    • 更新了隐藏输入表单的答案。
    猜你喜欢
    • 1970-01-01
    • 2019-01-02
    • 2017-08-03
    • 2017-04-08
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2014-05-06
    • 2017-07-11
    相关资源
    最近更新 更多