0

我正在构建一个表单 - 当用户点击“复制”按钮时,其中的一部分会动态生成并增加输入字段的各个 id。例如,为名字创建的输入字段的 id 为“firstname1”,当它复制时,它变为“firstname2”等。

我的问题出在我正在尝试构建的 php“确认”页面中。我想回显每个生成和填充的输入字段,而不用硬编码一堆回声。有人告诉我使用数组而不是单独的变量名——我有点理解这个概念,但还不够。

我试图创建一个数组来捕获每个新输入的值,这样我就可以 $_POST 数组,然后循环并回显每个值,但我真的不明白需要更改什么以及在哪里实现它。

以下代码复制了整个容器 div,它是输入字段,并增加了它的类号:

$(#replicate').click(function(){
  var $cloned = $('.container1').clone();
  $cloned.find('input').val('');
  $cloned.appendTo($('.emptyContainer'));
  var container = $(".emptyContainer div").length;
  var containerNumber = container + 1;
  var containerClass = 'container' + containerNumber; 
  $(".emptyContainer .container1").attr("class", containerClass);

然后输入 ids 以相同的方式递增:

var fnameID = 'firstname' + containerNumber;
$('.emptyContainer #firstname1').attr({id: fnameID, name: fnameID});

还有更多的输入,包括姓氏、电话、电子邮件等。

另一位用户建议:

foreach($_POST as $fieldName=>$fieldValue){
  echo $fieldName." = ".$fieldValue."<br/>";
}

虽然这可以让我在 php 页面上获得所有内容,但它们都在一个大块中,这会使后来的样式有点麻烦。

如何获取每个新输入的输入值,将它们存储在一个数组中,并将它们发布到 php 端,这样当用户点击提交时,所有相关信息都保留在它的相关区域中?

4

1 回答 1

0

您可以尝试以下方法,因为这种方法在动态行的情况下最适合我。

代码可读性不强,因为我直接从项目中粘贴,但仍然希望它会有所帮助

$('.add-option').live('click',function(){

        if(rowCtr < ucount){
            var tr = '<tr class="input-'+counter+'"><td><select id="itb_users" class="itb_users" name="project[itb_users]['+counter+']" >'
                tr +=     '<option value=0>Select</option>'
                          <?php foreach ($itb_users as $item){ ?>
                tr +=             '<option grade="<?php echo $item->grade; ?>" value="<?php echo $item->id; ?>"><?php echo $item->first_name; ?></option>';  
                         <?php } ?>
                tr +=   '</select>'
                tr += '</td>'
                tr +=   '<td>&nbsp;</td>'
                tr +=   '<td><input class="_hour" id="project[input-hour]['+counter+']" name="hours['+counter+']" type="text" class="field" style="width:30px"/></td>'
                tr +=   '<td><img class="add-option" src="'+'<?php img_src('add.png'); ?>'+'" />&nbsp;&nbsp;<img class="remove-option" src="'+'<?php img_src('remove.png'); ?>'+'" /></td>'
                tr +=   '</tr>';
                counter++;
                rowCtr++;
     .......

在提交 php 时将收到一个带有相关记录的变量项目。

于 2013-06-10T13:37:21.223 回答