0

jQuery 代码将新的虚拟对象“.add”添加到对象“.main”

$(document).ready(function(){
    $('.main').on('click', '.add', function (){
    $('.main').append('<div class="add">Next element</div><input type="hidden" name="param[]" value="Next element"/>');
});
});

</script>

表单“main”的 HTML 代码:

<form action="" method="post" class="main">
    <div class="add">First element</div>
    <input type="hidden" name="param[]" value="First element"/>
    <input type="submit" name="submit" value="go"/>
</form>

PHP迭代“参数”数组:

if (isset($_POST['submit']))
{
    foreach ($_POST['param'] as $element) 
    {
        echo '<br/>'.$element;
    }
}

在 $_POST 中不会有 jquery 附加的元素。怎么修?

4

1 回答 1

0

正因为如此:

 <input type="hidden" name="param[]" value="Next element"/>

我也尝试过一次,这样做[]不起作用,您必须在其中放置一个实际索引,例如:

<input type="hidden" name="param[1]" value="Next element"/>

最好的方法是计算你已经拥有的项目的长度并制作元素的索引。

所以你的代码看起来像:

$(document).ready(function(){
    $('.main').on('click', '.add', function (){
        var i = $('.my_input').length-1; // Because its an array
        $('.main').append('<div class="add">Next element</div><input class="my_input" type="hidden" name="param['+i+']" value="Next element"/>');
    });
});

请注意我是如何将类添加到输入中的?

编辑

这是一个绝对适用于您当前 HTML 的

$(document).ready(function(){
    $('.main').on('click', '.add', function (){
        var i = $('input[name*="param"]').length-1; // Because its an array
        $('.main').append('<div class="add">Next element</div><input type="hidden" name="param['+i+']" value="Next element"/>');
    });
});

仍然可以更好地优化,但嗯......

于 2012-06-28T14:16:45.530 回答