需要修复添加/删除字段行

时间:2012-08-14 18:31:56

标签: javascript jquery

这“几乎”有效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);
});​

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

感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

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

修正以下代码:

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

demo

答案 1 :(得分:1)

如何更改线路:

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

为:

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

<强> jsFiddle example

BTW,.live()已被弃用,最新版本的jQuery中支持.on()(这是示例使用的)。

答案 2 :(得分:0)

在审核了您的jsfiddle代码后,我注意到您将closest组移至minus链接,这恰好是第一个组,并且因为您要移除{{1该组的属性,要添加的组的选择器不再适用。我修改了您的代码,您可以在此处找到:http://jsfiddle.net/RfWsy/7/