0

我正忙于一个表单,它需要有一个选项来复制某些字段,就像用户点击一样多次,然后它也需要通过电子邮件发送出去,因此我目前在护照字段上。

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

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

当我使用 jQuery 克隆时:

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>
4

1 回答 1

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克隆的div,请在代码中添加。

于 2012-12-11T07:03:24.803 回答