我正在尝试使用jquery创建一个动态表单,该表单创建一个我可以在提交表单后检索的数组。
我相信我出错的地方是数组。不幸的是,这是我第一次尝试多维数组。我试图从不同的层中选择值。
所以下面的小提琴是我到目前为止所能得到的。
因为你应该能够看到我的顶部数组是'事件',所以这些数字在小提琴中编号为1和2.然后如果选择'cycle',jquery将添加一个div。 div中的输入是“起始点X:”和“Z:”,还有一个“添加点”按钮,每次单击时都会添加一行表单字段。
作为参考,我使用的是codeigniter,所以我的控制器有
function code(){
$data['global'] = $this->input->post('global');
$data['event'] = $this->input->post('event');
$this->load->view('view', $data);}
所以我认为问题出在我的数组标记中。
我可以很高兴地使用$global['home_x']
或$global['home_z']
在我的(codeigniter)视图中的单独“全局”数组中检索值。
我还可以通过循环使用
来检索$event[$j]['x_start']
和$event[$j]['z_start']
$event_count = count($event);
for ($j = 1; $j <= $event_count; $j++){
if($event[$j]['type'] == "cycle"){
echo number_format($event[$j]['x_start'], 3);
echo number_format($event[$j]['z_start'], 3);
}
然而,当我循环遍历数组的'point'层时,它开始出错了。 从上面继续我正在做的事情:
if(isset($event[$j]['point'])){
$point_count = count($event[$j]['point']);
for ($i = 1; $i <= $point_count; $i++ ) {
if($event[$j]['point'][$i]['type'] == "move"){
echo "Move" . number_format($event[$j]['point'][$i]['x_end'], 3) . number_format($event[$j]['point'][$i]['z_end'], 3);
}
else if($event[$j]['point'][$i]['type'] == "arc"){
echo "Arc" . number_format($event[$j]['point'][$i]['x_end'], 3) . number_format($event[$j]['point'][$i]['z_end'], 3) . number_format($event[$j]['point'][$i]['radius'], 3);
}
else if($event[$j]['point'][$i]['type'] == "position"){
echo "Position" . number_format($event[$j]['point'][$i]['x_end'], 3) . number_format($event[$j]['point'][$i]['z_end'], 3);
}
}
}
}
我希望每个事件都有一个独立的点密钥。正如我的var point = 1
和point++
一样,每次按下添加点按钮时,我只是在按键上添加1,无论是事件1还是2。
所以我需要这样的东西:
事件 - 1 - x_start
z_start
点 - 1 - 键入
x_end
z_end
半径
点 - 2 - 键入
x_end
z_end
半径
2 - x_start
z_start
点 - 1 - 键入
x_end
z_end
半径
点 - 2 - 键入
x_end
z_end
半径
代替:
事件 - 1 - x_start
z_start
点 - 1 - 键入
x_end
z_end
半径
点 - 2 - 键入
x_end
z_end
半径
2 - x_start
z_start
点 - 3 - 键入
x_end
z_end
半径
点 - 4 - 键入
x_end
z_end
半径
如果按下“删除点”按钮时,“点”键编号可能会重新排序,这将是完美的。因此,例如,当删除第1点时,第2点变为第1点。
最后我需要事件也是动态的,所以当按下假设的“添加事件”按钮时,它会添加一个新事件。反之亦然,删除按钮。但我目前只在视图页面中查看了for循环。
我希望我能够解释得这么好!!!