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 迭代 "param" 数组:
if (isset($_POST['submit']))
{
foreach ($_POST['param'] as $element)
{
echo '<br/>'.$element;
}
}
在 $_POST 中不会有 jquery 附加的元素。如何解决?
正是因为这个:
<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一起使用的 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"/>');
});
});
还可以更好地选择,但是唔...