【发布时间】:2015-04-30 04:48:40
【问题描述】:
如何根据 jQuery 中的父级和内部父级计数动态更改输入元素的索引。 在以下代码中如何更改表单元素的索引
<div id='parent_container0'>
<div id='parent_inner_container0'>
<label> Name </label>
<input type='text' name='name[]'/>
<div id='child_container0'>
<div id='child_inner_container0'>
<label> Email </label>
<input type='text' name='email[]'/>
<label> Phone </label>
<input type='text' name='phone[]'/>
</div>
</div>
</div>
</div>
<div id='parent_container1'>
<div id='parent_inner_container1'>
<label> Name </label>
<input type='text' name='name[]'/>
<div id='child_container1'>
<div id='child_inner_container1'>
<label> Email </label>
<input type='text' name='email[]'/>
<label> Phone </label>
<input type='text' name='phone[]'/>
</div>
</div>
</div>
</div>
我需要更改表单元素的名称为
name[0]
email[0][0]
phone[0][0]
name[1]
email[1][0]
phone[1][0]
基于 jQuery 中这些元素的父级索引。 我怎样才能做到这一点? 任何帮助表示赞赏。 谢谢,
注意:要求是使用嵌套表单添加更多的父表单和子表单,每个表单都有嵌套表单字段我使用以下代码更改索引。
$('.parent_container').each(function(i) {
var pindex = $(this).index();
var mainfrm=$(this);
var orgname="";
mainfrm.find('.parent_container_inner').each(function(j) {
$(this).find('input, select, textarea').each(function(k){
orgname = $(this).attr('name');
orgname = orgname.replace(/[[]\d]+/g,"");
$(this).attr('name', orgname+"["+pindex+"]["+j+"]["+k+"]");
});
});
});
【问题讨论】:
-
请展示您尝试过的内容。也很好奇为什么你需要这样做
-
我正在使用嵌套表单克隆。提交表单后,我必须将子表单值一个接一个地映射到父子表单值
-
不太明白为什么在服务器上映射数据与在客户端重新映射名称有什么不同
-
您的要求很不明确。首先,与@charlietfl 相同的问题,为什么需要在客户端重新映射名称?其次,您是否要考虑重新映射 'child_inner_container1' 中的 '1' 之类的 id 索引,或者它们是否无关紧要(如您在示例中所说)?第三也是最后,当你提到“表格”时,你指的是form吗?
标签: javascript jquery html css indexing