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

时间:2010-04-28 11:14:15

标签: jquery loops

我最近问了一个关于使用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);
});

这非常有效。更改选择时,有没有办法让值保留在文本框中?例如,假设选择元素值设置为“2”,以便显示2个输入框。如果已经在这些框中输入了输入并且用户将select元素值更改为“3”,是否有办法让前2个输入框保留其值?

感谢您的帮助

安迪

2 个答案:

答案 0 :(得分:1)

$('select').change(function() {
     var num = parseInt($(this).val(), 10);
     var container = $('<div />');
     for(var i = 1; i <= num; i++) {

         // append existing input if available
         if($("#id"+i).length){
            container.append($("#id"+i));
         }
         else {
             container.append('<input id="id'+i+'" name="name'+i+'" />');
         }
     }
     $('somewhere').html(container);
});

答案 1 :(得分:1)

以下行应该有效,简单明了:

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

编辑,谢谢帕特里克。