0

我想出了如何克隆我的表单行并将一个犯罪数字附加到每个表单字段的 ID 末尾。因此,我认为在 ID 末尾附加的犯罪数字将很容易在更改事件中使用以将一个 id 的值复制到另一个,但这不适用于克隆的行!

我正在使用它来创建新的表单行:

$('#btnRemove').attr('disabled','disabled');
            $('#btnAdd').click(function() {
                var num     = $('.clonedInput').length;
                var newNum  = new Number(num + 1);

                var newElem = $('#input' + num).clone().attr('id', 'input' + newNum);

                                newElem.children('.product').attr('id', 'product' + newNum).attr('name', 'product' + newNum);
                newElem.children('.productid').attr('id', 'productid' + newNum).attr('name', 'productid' + newNum);

                $('#input' + num).after(newElem);
                $('#btnRemove').removeAttr('disabled','disabled');

                if (newNum == 7)
                $('#btnAdd').attr('disabled','disabled');


            });

            $('#btnRemove').on('click', function() {
                $('.clonedInput').last().remove();
                $('#btnAdd').removeAttr('disabled','disabled');
            });

我正在(尝试)使用此代码将序列化的产品 id.val(value.split('-')[3])从产品选择值复制到表单中的“id”字段。它仅适用于第一个,但不适用于“克隆”表单字段:

 $("#product").on('change keyup', function() {
        var value = $('option:selected', this).val();
            $("#productid").val(value.split('-')[3]);
        }).keyup();
        $("#product2").on('change keyup', function() {
        var value = $('option:selected', this).val();
            $("#productid2").val(value.split('-')[3]);
        }).keyup();
        $("#product3").on('change keyup', function() {
        var value = $('option:selected', this).val();
            $("#productid3").val(value.split('-')[3]);
        }).keyup();
        $("#product4").on('change keyup', function() {
        var value = $('option:selected', this).val();
            $("#productid4").val(value.split('-')[3]);
        }).keyup();
        $("#product5").on('change keyup', function() {
        var value = $('option:selected', this).val();
            $("#productid5").val(value.split('-')[3]);
        }).keyup();
        $("#product6").on('change keyup', function() {
        var value = $('option:selected', this).val();
            $("#productid6").val(value.split('-')[3]);
        }).keyup();​

我把它放在 jsfiddle 上,这样更容易看出我的问题是什么:Demo

4

1 回答 1

3

当您select使用克隆创建并动态附加到 DOM 时,您需要为它们委托事件处理程序

// delegate event handler
$('#myForm').on('change keyup', 'select[id^=product]', function() {
    var value = $('option:selected', this).val();
    $(this).next('input.productid').val(value.split('-')[3]);
}).keyup();

演示

于 2012-06-15T16:08:14.577 回答