【问题标题】:PHP and jQuery - pushing input values into an array to be POSTedPHP 和 jQuery - 将输入值推送到要发布的数组中
【发布时间】:2013-06-10 11:59:27
【问题描述】:

我正在构建一个表单 - 当用户点击“复制”按钮时,其中的一部分会动态生成并增加输入字段的各个 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 端,这样当用户点击提交时,所有相关信息都保留在它的相关区域中?

【问题讨论】:

  • $(#replicate') 你缺少开头的单引号吗?

标签: php jquery


【解决方案1】:

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

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

$('.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 时会收到一个带有相关记录的变量项目。

【讨论】:

    猜你喜欢
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 2020-02-21
    • 1970-01-01
    相关资源
    最近更新 更多