代码之家  ›  专栏  ›  技术社区  ›  Andy

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

  •  1
  • Andy  · 技术社区  · 15 年前

    我最近问了一个关于用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',则会显示2个输入框。如果已经在这些框中输入了输入,并且用户将select element值更改为“3”,是否有方法让前两个输入框保留其值?

    谢谢你的帮助

    安迪

    2 回复  |  直到 15 年前
        1
  •  1
  •   GlenCrawford    15 年前

    下一行 应该 工作,又好又简单:

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

    编辑,谢谢帕特里克。

        2
  •  1
  •   Luis Melgratti    15 年前
    $('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);
    });