根据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+'][]">');
}
});
答案 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 + '][]');
});
});
答案 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