Javascript 什么';将输入名称动态添加到表单时,更新输入名称的最佳方法是什么?

Javascript 什么';将输入名称动态添加到表单时,更新输入名称的最佳方法是什么?,javascript,jquery,arrays,forms,dynamic,Javascript,Jquery,Arrays,Forms,Dynamic,当动态地向POST数组添加更多内容时,我正在尝试想出一种干净高效的方法来处理表单输入名称 例如,如果我有以下表格: <fieldset> <input type="text" name="users-0.firstname" /> <input type="text" name="users-0.lastname" /> </fieldset> 谢谢你的帮助。干杯。您考虑过使用基于数组的字段名吗?你根本不需要改变这些: <inp

当动态地向POST数组添加更多内容时,我正在尝试想出一种干净高效的方法来处理表单输入名称

例如,如果我有以下表格:

<fieldset>
   <input type="text" name="users-0.firstname" />
   <input type="text" name="users-0.lastname" />
</fieldset>

谢谢你的帮助。干杯。

您考虑过使用基于数组的字段名吗?你根本不需要改变这些:

<input type="text" name="users.firstname[]" />
<input type="text" name="users.lastname[]" />

当然,这是否适用于您将取决于您将如何处理字段。


<fieldset>
    <input index=1 var=user prop=firstname />
    <input index=1 var=user prop=lastname />
</fieldset>

<fieldset>
    <input index=2 var=user prop=firstname />
    <input index=2 var=user prop=lastname />
</fieldset>
$(文档).ready(函数(){ $('.addmore')。单击(函数(){ var fieldset=$(this.prev('fieldset'); var newFieldset=fieldset.clone(); 增量字段集(newFieldset); insertBefore($(this)); }); }); 函数增量字段集(集合){ $(设置)。查找('input')。每个(函数(){ var oldName=$(this.attr('name'); var regex=/^(.*)-([0-9]+)\(.*)$/; var match=regex.exec(oldName); var newName=match[1]+'-'+(parseInt(match[2])+1)+'.+match[3]; $(this.attr('name',newName); }); }
当我使用PHP时,我会使用该数组方法。该特定代码取自我正在处理的Pythons项目,该项目利用>将发布的数据转换为字典/列表。如果我有几百个输入(在一个表单上,就是这种情况),在一次点击中执行这些更改可能会导致浏览器性能下降。您有性能下降问题的测试数据吗?我在firefox上进行了测试,里面有2000个输入字段,用了不到1秒钟的时间更新了所有字段。我的评论是一个假设。我没有测试过。如果你不介意发布的话,我想看看你的名字代码?
$newset = updatenames($newset, $('fieldset').length +1);
$newset.insertBefore($button);
<input type="text" name="users.firstname[]" />
<input type="text" name="users.lastname[]" />
<fieldset>
    <input index=1 var=user prop=firstname />
    <input index=1 var=user prop=lastname />
</fieldset>

<fieldset>
    <input index=2 var=user prop=firstname />
    <input index=2 var=user prop=lastname />
</fieldset>
<%
for (int i = 0; i < 1000; i++) {
%>

<fieldset>
<input index=<%=i%> var=user prop=firstname />
<input index=<%=i%> var=user prop=lastname />
</fieldset>
<%
}
%>
$('button').click(function(){

   $('input').each(function(i, node){
      var $node = $(node);

      $node.attr('name', $node.attr('var') + $node.attr('index') + "."+ $node.attr('prop'))

   });

});
<script type="text/javascript">
    $(document).ready(function () {
        $('.addmore').click(function () {
            var fieldset = $(this).prev('fieldset');
            var newFieldset = fieldset.clone();
            incrementFieldset(newFieldset);
            newFieldset.insertBefore($(this));
        });
    });

    function incrementFieldset(set) {
        $(set).find('input').each(function () {
            var oldName = $(this).attr('name');
            var regex = /^(.*)-([0-9]+)\.(.*)$/;
            var match = regex.exec(oldName);
            var newName = match[1] + '-' + (parseInt(match[2]) + 1) + '.' + match[3];
            $(this).attr('name', newName);
        });
    }
</script>

<fieldset>
   <input type="text" name="users-0.firstname" />
   <input type="text" name="users-0.lastname" />
</fieldset>
<input type="button" class="addmore" value="Add" />