Jquery 找到1并用正则表达式替换它

Jquery 找到1并用正则表达式替换它,jquery,regex,Jquery,Regex,我试图复制一个表单,并根据表单的数量将值1替换为2、3等 这是我的html: <div id="clonedInput1" class="clonedInput"> <input id="show_upload_image_link_1" type="text" size="36" name="kandibox_theme_hero_options[show_upload_image_link_1]" value="<?php echo $hero_options[

我试图复制一个表单,并根据表单的数量将值1替换为2、3等

这是我的html:

<div id="clonedInput1" class="clonedInput">

  <input id="show_upload_image_link_1" type="text" size="36" name="kandibox_theme_hero_options[show_upload_image_link_1]" value="<?php echo $hero_options['show_upload_image_link_1']; ?>" /> 
 <input id="show_upload_image_link_button_1" class="button upload_images" type="button" value="Upload Image" />

  <div class="actions">
      <button class="clone">Clone</button> 
      <button class="remove">Remove</button>
  </div>
</div>
到目前为止,它添加了额外的表单,但不会替换名称或值中的值1


这里有一个fiddle和带有清理功能的最终版本,以避免代码重复:

$("button.clone").live("click", function(){
    var cloneIndex = $(".clonedInput").length + 1;
    var new_Input = $(this).parents(".clonedInput").clone();
    updateClonedInput(cloneIndex, new_Input);    
});

$("button.remove").live("click", function(){
    $(this).parents(".clonedInput").remove();

    $(".clonedInput").each( function (cloneIndex, clonedElement) {
        updateClonedInput(cloneIndex + 1, clonedElement);
    })
});
对于
input
IDs计算和其他属性,我完全放弃了regex。我还改变了处理新输入的方式:首先创建一个
newInput
,然后处理它。更容易和更可读的方法

删除一个输入时,
输入
字段也将重新编号为1、2、3。。。 小提琴已经更新以反映这一点

注意,如果您删除了第一个输入,那么您将没有更多的输入区域或按钮来添加新的输入…:-)解决方案:要么从输入表单中删除此按钮,要么在只剩下一个输入的情况下设置一个不允许删除的条件

希望有帮助


... 然后呢?请解释,如果您收到错误消息(如果是,是哪一条),或者结果与您的预期不同(如果是,如何)。这是否解决了您的问题。看起来name属性仍然是错误的,但我认为修复方法很简单。这里您只更新HTML的Id,但在他的代码中他一直使用cloneIndex,而cloneIndex从未更新过。是的。我注意到了。正在努力。但我的代码还有另一个问题。如果删除一个部分,下一个创建的部分可能会有重复的数字。如果数字不需要按顺序排列(例如1 2 3 4…),但可以(1(删除2)3 5 6 7),则有两种方法可以修复该问题,而不必只替换cloneIndex=$(“.clonedInput”)。长度+1;在我对cloneIndex++的回答中。否则,每次克隆操作都必须更新.clonedInput。(测试您有多少个表单,然后重新编号)在这种情况下,我会将我的ID更改为数组ID=clonedInput[0],…理想情况下,如果创建了3个表单,即1、2、3和删除了数字2,我希望将数字3更改为数字2?我提出的最终解决方案不会出现这种情况。但是,您可以通过遍历所有
.clonedInput
,并在单击
按钮.remove
时更改它们及其子项来轻松实现这一点。我今天没有时间做这件事,但明天可以看一看。但是,新的表格编号也必须按照我最初的建议进行更改。这
cloneIndex++必须更改为:
cloneIndex=$(“.clonedInput”).length+1
$("button.clone").live("click", function(){
    var cloneIndex = $(".clonedInput").length + 1;
    var new_Input = $(this).parents(".clonedInput").clone();
    updateClonedInput(cloneIndex, new_Input);    
});

$("button.remove").live("click", function(){
    $(this).parents(".clonedInput").remove();

    $(".clonedInput").each( function (cloneIndex, clonedElement) {
        updateClonedInput(cloneIndex + 1, clonedElement);
    })
});