jquery克隆带有递增id的元素

时间:2012-12-11 06:47:40

标签: javascript jquery

我正忙着一个表单,需要选择复制某些字段的次数与用户点击一样多,然后它也需要被E-Mailed关闭,因此我目前在护照字段上。

唯一的问题是,我设置它的方式是,对于每个div元素,类关闭“passport”,它会创建一个输入字段。所以现在字段ID是:

1 2 3 4 5 6 7 8 9 10 11 12 13

当我使用jQuery clone时:

1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13

以及我需要它:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

但是我如何只分配与该输入相关联的第一组id,因为它会评估字段的值。

无论如何,任何帮助/建议都非常赞赏。

继承人jsfiddle:http://jsfiddle.net/dawidvdh/A5naZ/

下面是代码:

jQuery的:

    $(document).ready(function() {
    var pass = 1;
    val = 0;
jQuery('div.passport').each(function() {
    var index = "pass"+pass++;
    var passer = "<input class='pass' id="+'"'+index+'"'+" "+" maxlength='1' />";
    var passvalue = $(this).attr('value');
    jQuery(passer).appendTo('#pass');
});

$("#clone").click(function () {
    $('#pass').clone().insertAfter("#pass");
});

function Validatepass() {
    var passValue = '';
    $('.pass').each(function(){ passValue+=($(this).val());});    
    jQuery('#error p').remove();
    var error = jQuery('#error');
    var passNumber = passValue;
    var correct = true;
    if (passNumber.length != 13) {
        correct = false;
    }
    // if no error found, hide the error message
    if (correct) {
        jQuery('.pass').css("border","1px solid #9A8B7D");
    }
    // otherwise, show the error
    else {
        jQuery('.pass').css("border","1px solid #FF0000");
    }
    return false;
}

$('input.pass').keydown(function(e){
    if(e.keyCode == 8){
        $(this).val('');
        $(this).prev().val('');
        $(this).prev().focus();
         Validatepass();
    }
});  

$('input.pass').on('keyup', function(){
    if (this.value.match(/\d+/)) {
        var $this = $(this);
        if ($this.next('input').length) {
          $this.next().focus();
        } else {
          Validatepass();
        }  
    }
});
});

和HTML:

<div id="pass"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<div class="passport"></div>
<button id="clone">duplicate</button>

1 个答案:

答案 0 :(得分:0)

将点击功能更改为此

$("#clone").click(function () {
    var clonedObj=$('#pass').clone().insertAfter("#pass");
    clonedObj.find('.pass').each(function(){
       this.id='pass' + pass++;
    });
    clonedObj[0].id="WatEverUWant";
});

编辑:检查此jsfiddle

编辑2:根据您的第二条评论,如果您的意思是更改克隆id的{​​{1}},请在代码中添加。