2016-03-08 138 views
2

我已经使用此示例http://jsfiddle.net/aaki/hMJEy/1/动态地将输入字段添加到表单,这就像魅力一样。使用值加载动态添加的输入字段

这是代码:

的Javascript:

$('.multi-field-wrapper').each(function() { 
    var $wrapper = $('.multi-fields', this); 
    $(".add-field", $(this)).click(function(e) { 
     $('.multi-field:first-child', $wrapper).clone(true).appendTo($wrapper).find('input').val('').focus(); 
    }); 
    $('.multi-field .remove-field', $wrapper).click(function() { 
     if ($('.multi-field', $wrapper).length > 1) 
      $(this).parent('.multi-field').remove(); 
    }); 
}); 

HTML:

<form role="form" action="/wohoo" method="POST"> 
    <label>Stuff</label> 
    <div class="multi-field-wrapper"> 
    <div class="multi-fields"> 
     <div class="multi-field"> 
     <input type="text" name="stuff[]"> 
     <button type="button" class="remove-field">Remove</button> 
     </div> 
    </div> 
    <button type="button" class="add-field">Add field</button> 
    </div> 
</form> 

但现在我想从数据库中的数据,并放入表单中的值。这样数据就可以更新,然后再次保存在数据库中。

不幸的是,jQuery是我的弱点,并且一直在努力。任何建议或工作示例?

非常感谢您提前。

回答

3

您需要将该数据转换为JSON字符串,然后使用jQuery.getJSON方法加载JSON。

function addField($wrapper) { 
 
    var $elem = $('.multi-field:first-child', $wrapper).clone(true).appendTo($wrapper).find('input'); 
 
    $elem.val('').focus(); 
 
    return $elem; 
 
    } 
 

 
    function loadData(){ 
 
    $.getJSON("http://www.json-generator.com/api/json/get/bSxiJZPXuG?indent=2", function(data) { 
 
     /* 
 
     [ 
 
      { 
 
      "name": [ 
 
       "Tom", 
 
       "Mike", 
 
       "Sam" 
 
      ] 
 
      } 
 
     ] 
 
     */ 
 
     for(var i = 0; i < data[0][ "name" ].length; i++) { 
 
     if (i >= $('.multi-field input').length) { 
 
      var $wrapper = $('.multi-fields'), 
 
       $elem = addField($wrapper) 
 
       $elem.val(data[0][ "name" ][i]) 
 
     } else { 
 
      $('.multi-field input').eq(i).val(data[0][ "name" ][i]) 
 
     } 
 
     } 
 
    }); 
 
    } 
 

 

 
    $('.multi-field-wrapper').each(function() { 
 
     var $wrapper = $('.multi-fields', this); 
 
     $(".add-field", $(this)).click(function(e) { 
 
      addField($wrapper) 
 
     }); 
 
     $('.multi-field .remove-field', $wrapper).click(function() { 
 
      if ($('.multi-field', $wrapper).length > 1) 
 
       $(this).parent('.multi-field').remove(); 
 
     }); 
 
    }); 
 

 
    loadData();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<form role="form" action="/wohoo" method="POST"> 
 
    <label>Stuff</label> 
 
    <div class="multi-field-wrapper"> 
 
     <div class="multi-fields"> 
 
     <div class="multi-field"> 
 
      <input type="text" name="stuff[]"> 
 
      <button type="button" class="remove-field">Remove</button> 
 
     </div> 
 
     </div> 
 
    <button type="button" class="add-field">Add field</button> 
 
    </div><div id="images"></div> 
 
</form>

+0

不错!非常整洁的解决方案,我喜欢它在json中的读取方式。 在你的例子中,你添加了3个名字,反正有3个输入字段的名字已经在页面加载时显示出来了吗? 非常感谢。 – MrSoolmaan

+0

如果输入字段数组长度<数据长度,添加输入字段,希望它有帮助。 - 薛明芳1小时前 –

+0

谢谢大帮忙!我尝试的东西甚至没有接近您的解决方案。每天学习新事物。再次感谢! – MrSoolmaan