1

这个“几乎”有效http://jsfiddle.net/RfWsy/4/

$(document).ready(function() {

  function addRows(label, maxRows, minRows) {
  $('.add-' + label).live('click', function() {
    if ($("." + label + "-group").length < maxRows) {

      var newrow = $('#' + label + '-template')
        .clone().removeAttr('id');

      newrow.insertAfter($(this)
        .closest('.' + label + '-group'))
        .find('.minus').show();

      newrow.find('input').val('');
      newrow.find('select').val('');

    }
  });

  $('.remove-' + label).live('click', function() {
    if ($("." + label + "-group").length > minRows) {
      $(this).closest('.' + label + '-group').remove();
    }
  });
}
  addRows('hs-community-service', 3, 1);
});​

用户最多可以添加三组字段,然后删除除一组以外的所有字段。这可行,但是在删除除一组之外的所有内容后(通过单击最顶部的第一个减号链接),尝试单击添加按钮,您会注意到它不会添加新的字段集。

任何帮助表示赞赏。

4

3 回答 3

2

发生这种情况是因为您删除了用作模板的 div。
如果您检查您的 html,您会发现它#hs-comunity-service-template不存在。

修复以下代码:

$('.remove-' + label).live('click', function() {
    var $element = $("." + label + "-group");
    if ($element.length > minRows) {
        $element.last().remove();
    }
});

演示

于 2012-08-14T18:42:28.370 回答
1

换行怎么样:

$(this).closest('.' + label + '-group').remove();

到:

$("." + label + "-group").last().remove();

jsFiddle 示例

顺便说一句, .live() 在最新版本的 jQuery 中已被弃用,取而代之的是 .on() (这是示例所使用的)。

于 2012-08-14T18:43:54.360 回答
0

在查看了您的 jsfiddle 代码后,我注意到您正在将closest组删除到minus链接中,这恰好是第一个组,并且由于您正在删除该组的id属性,因此要添加的组的选择器不再适用。我修改了你的代码,你可以在这里找到:http: //jsfiddle.net/RfWsy/7/

于 2012-08-14T18:44:04.190 回答