如何在表单中使用来自 jquery 附加依赖输入的数据


How to use data from jquery appended dependent inputs in a form

不确定我选择的标题是否非常明确。如果没有,对不起。

我的问题是,我们是否有一个具有类似依赖输入的表单:

<form>
<input type='text' name='item-1'/>
<input type='text' name='sub-item-1'/>
<input type='text' name='sub-item-2'/>
</form>

在这种情况下,子项与上述项直接关联。

现在,我们在此表单中添加了 2 个按钮。

第一个将添加(jQuery append)一个输入子项,在这种情况下它将是:

 <input type='text' name='sub-item-3'/>

第二个按钮将添加(也是jQuery附加)一个带有自己的子项的所有新项。

所以我们最终可能会得到这样的东西:

<form>
<input type='text' name='item-1'/>
<input type='text' name='sub-item-1'/>
<input type='text' name='sub-item-2'/>
<input type='text' name='sub-item-3'/>
<input type='text' name='item-2'/>
<input type='text' name='sub-item-1'/>
<input type='text' name='sub-item-2'/>
</form>

如果我使用提交按钮,则数据的"依赖关系"不会通过。所以我最终得到了这样的东西:

array(
item-1 => random value A,
sub-item-1 => random value B,
sub-item-2 => random value C,
etc)

所以我的问题是我怎样才能最终得到一个转换数据依赖性的数组。例如:

array(
Value item 1 => array(
sub-item-1 => random value B,
sub-item-2 => random value C)
Value item 2 => array(
sub-item-1 => random value B))
etc

欣赏 anu 对表单的其他结构的反馈,或之后构建数据的方法。重要的是最终得到一个显示输入依赖性的数组。

希望它足够清楚,尽力而为。

首先,表单输入的 name 属性必须全部唯一。因此,您可以为每个

"父项"执行"子项-1-1",而不是每个"父项"的"子项-1",对于下一个"子项-2-1"。

这里有一些代码可以采用这样的数组并将其重新组织成 2-D 数组(只需将您的 inputValues 与 $_POST 交换即可)

$inputValues = array(
    'item-1'=>'parent 1',
    'sub-item-1-1'=>'sub value 1-1',
    'sub-item-1-2'=>'sub value 1-2',
    'item-2'=>'parent 2',
    'sub-item-2-1'=>'sub value 2-1'
);
$outputArray = array();
//create array of parents
foreach($inputValues AS $key=>$value){
    if(is_numeric($key[5])){
        array_push($outputArray,array('parent'=>$value));
    }
}
//add children
foreach($inputValues AS $key=>$value){
    if(is_numeric($key[9])){
        $parentIndex = $key[9]-1;
        $outputArray[$parentIndex][$key] = $value;
    }
}
print_r($outputArray);

编辑:刚刚意识到,如果您的项目计数达到两位数,这将不起作用 - 如果是这样,请使用substring从键名称中提取项目/父编号,而不是" $key[5]"或" $key[9]"