目前我正在创建一个表单,其中包含一个动态添加字段的选项(作为带有额外字段的行)。生成器是一个只添加到引导包装器中的表。如下图所示。一切都工作顺利,但我对后POST编程很无能,导致现在var_dump似乎很乱,我不太清楚什么解决方案最好a)在jquery中将数据发送到php时形成数据或b)将发布数据合并到用户数组。超过所有期望的输出将是(PHP)
array()
['user1'] =>
['role'] => 'something'
['can_edit'] = > 0
['can_read'] = > 1
['can_execute'] = > 1
['is_admin'] = > 0
只是想知道如何实现这一点,给我一些提示。此外 - 正如你所看到的那样,“on”表示is_checked,如果它的0根本不存在则为1,但这不是问题。
帖子var_dump
["user"]=>
array(4) {
[0]=>
string(5) "user1"
[1]=>
string(5) "user2"
[2]=>
string(5) "user3"
[3]=>
string(5) "user4"
}
["role"]=>
array(4) {
[0]=>
string(9) "something"
[1]=>
string(9) "something"
[2]=>
string(9) "something"
[3]=>
string(9) "something"
}
["can_edit"]=>
array(4) {
[0]=>
string(2) "on"
[1]=>
string(2) "on"
[2]=>
string(2) "on"
[3]=>
string(2) "on"
}
["can_read"]=>
array(2) {
[0]=>
string(2) "on"
[1]=>
string(2) "on"
}
["can_execute"]=>
array(2) {
[0]=>
string(2) "on"
[1]=>
string(2) "on"
}
["is_admin"]=>
array(1) {
[0]=>
string(2) "on"
}
我的发电机
$( “ADDCF”)。单击(函数(){
$("#customFields").append('<tr><td>'+sel[0].outerHTML+'</td><td><input class="form-control" type="text" name="role[]" /></td><td><input type="checkbox" class="mycheckbox" name="can_edit[]"></td><td><input type="checkbox" class="mycheckbox" name="can_read[]"></td><td><input type="checkbox" class="mycheckbox" name="can_execute[]"></td><td><input type="checkbox" class="mycheckbox" name="is_admin[]"></td><td><a href="javascript:void(0);" class="remCF">Remove</a></td></tr>');
$('.mycheckbox').iCheck({checkboxClass: 'icheckbox_square-blue',radioClass: 'iradio_square-blue'});
});
答案 0 :(得分:0)
我假设您正在命名输入,例如name =&#34; user []&#34; ?
通常我会通过在名称字段中添加一个计数器来执行此操作,例如name =&#34; user_1&#34;然后命名=&#34; user_2&#34;等,让JS跟踪。
然后在php中我会像这样循环:
$records = array();
foreach ($_POST as $key => $value)
{
if (substr($key, 0, 5) != 'user_') continue;
$row = substr($key, 5);
$user = $_POST['user_'.$row];
$role = $_POST['role_'.$row];
$can_edit = 0;
if (isset($_POST['can_edit_'.$row])) $can_edit = 1;
// ETC
// VALIDATION GOES HERE
// IF NO VALIDATION ERRORS:
$records[] = array('user' => $user, 'role' => $role, 'can_edit' = $can_edit;
}
javascript生成器:
$(".addCF").click(function(){
count = $('#customFields tr').length + 1;
$("#customFields").append('<td>'+sel[0].outerHTML+'</td><td><input class="form-control" type="text" name="role'+count+'" /></td><td><input type="checkbox" class="mycheckbox" name="can_edit'+count+'"></td><td><input type="checkbox" class="mycheckbox" name="can_read'+count+'"></td><td><input type="checkbox" class="mycheckbox" name="can_execute'+count+'"></td><td><input type="checkbox" class="mycheckbox" name="is_admin'+count+'"></td><td><a href="javascript:void(0);" class="remCF">Remove</a></td></tr>');
$('.mycheckbox').iCheck({checkboxClass: 'icheckbox_square-blue',radioClass: 'iradio_square-blue'});
});