JS / jQuery数量增加了

时间:2011-09-23 08:37:58

标签: javascript jquery for-loop

根据example,我想在每次添加新输入时将数字放在字段(1,2,3)中,每个输入中的数字从新输入中增加到name[+number increasing here+][]输入

现在我的代码中有这个:
Example:

  

如果放到“字段1”编号2,我们会得到两个新的输入名称   name[0][], name[1][]
在“字段2”中输入了数字3   name[0][], name[1][], name[2][]在“字段3”中输入了数字2   得到name[0][], name[1][]

我想要你:

  

如果放到“字段1”编号2,我们会得到两个新的输入名称   name[0][], name[1][]在“字段2”中输入了数字3   name[2][], name[3][], name[4][]在“字段3”中输入了数字2   得到name[5][], name[6][]等等。

代码:

$('input').live("keyup", function () {    
    var id = '#'+$(this).closest('b').attr('id');
    $(id+' .lee').empty();    
    var $val = $(this).val();
    for (var i = 0; i < $val; i++) {
        $(id+' .lee').append('<input type="text" name="hi['+i+'][]">');        
    }
});

2 个答案:

答案 0 :(得分:2)

由于您想要更新所有输入的输入,您可以在追加元素后循环遍历所有输入。只需为它们添加一个类名,这样您就可以知道要计算哪些类。

示例:

$('input').live("keyup", function () {    
    var id = '#'+$(this).closest('b').attr('id'),
    val = $(this).val();

    $(id+' .lee').empty();  

    for (var i = 0; i < val; i++) {
        $(id+' .lee').append('<input type="text" class="input_generated">');  
    }

    $('input.input_generated').each(function(i) {
      $(this).attr('name', 'hi[' + i + '][]');
    });
});

小提琴:http://jsfiddle.net/rHUqS/1/

答案 1 :(得分:0)

通过在函数外部使用变量,您可以简单地解决这个问题。但是,它总是只增加索引号;如果您以错误的顺序键入计数,则索引的顺序将错误。但也许没关系。

var counter = 0;
$('input').live("keyup", function () {    
    var id = '#'+$(this).closest('b').attr('id');
    $(id+' .lee').empty();    
    var val = int($(this).val());
    for (var i = counter; i < val + counter; i++) {
        $(id+' .lee').append('<input type="text" name="hi['+i+'][]">');        
    }
    counter = val + counter;
});

编辑:修复val作为字符串而不是int