jquery循环创建具有保留值的元素

jquery循环创建具有保留值的元素,jquery,loops,Jquery,Loops,我最近问了一个关于使用jquery创建元素的问题。具体来说,我需要根据特定选择框的值创建/删除输入框。这一问题很快得到了很好的解决,如下所示: $('select').change(function() { var num = parseInt($(this).val(), 10); var container = $('<div />'); for(var i = 1; i <= num; i++) { container.ap

我最近问了一个关于使用jquery创建元素的问题。具体来说,我需要根据特定选择框的值创建/删除输入框。这一问题很快得到了很好的解决,如下所示:

$('select').change(function() {
     var num = parseInt($(this).val(), 10);
     var container = $('<div />');
     for(var i = 1; i <= num; i++) {
         container.append('<input id="id'+i+'" name="name'+i+'" />');
     }
     $('somewhere').html(container);
});
这很有效。更改选择时,是否有方法使值保留在文本框中?例如,假设select元素值设置为“2”,因此有两个输入框显示。如果已经在这些框中输入了输入,并且用户将“选择元素”值更改为“3”,是否有办法使前两个输入框保留其值

提前谢谢你的帮助

安迪

下面这句话应该很好用,很简单:

var value = ($("#id"+i).val() || '');
container.append('<input id="id'+i+'" name="name'+i+'" value="'+value+'" />');

编辑,谢谢patrick。

还有一种情况是选择了较低的编号,我假设输入框需要从编号最高的ID后面截断。到目前为止你都试了些什么?小心点。将container.append放在for循环中对性能非常不利。而是使用+=或array.push连接循环内的所有标记,并在循环后的一个.append操作中使用该标记。if$id+i{…这一行将始终返回true。您需要if$id+i.length{相反。如果没有现有的输入,这将插入undefined。id也位于错误的位置。应该是id。您可以先测试undefined,比如var value=$id+i.val | |;。
var value = ($("#id"+i).val() || '');
container.append('<input id="id'+i+'" name="name'+i+'" value="'+value+'" />');