使用 jQuery 在引导网格中添加/删除元素并防止删除第一个元素

问题描述 投票:0回答:1

使用 jQuery 在引导网格中动态添加/删除元素效果很好,但是我们如何防止删除第一个元素呢?另外,我想添加一些添加元素的限制。你能帮我吗?我在这里更新了 demo

<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!------ Include the above in your HEAD tag ---------->

<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!------ Include the above in your HEAD tag ---------->

<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>


<div class="container">
    
 <div class="form-group row custom-upload">

   
    <div class="col-md-12">
        <div data-role="appendRow">
            <div class="form-inline form-row">
            
              <input input type="text" class="form-control mb-2 mr-sm-2 col-sm-4" id="field-name" placeholder="Enter....">                          
                                    
                <button class="btn btn-sm btn-danger  mb-2" data-role="remove">
                 <i class="fa fa-minus"></i>
                </button>
                <button class="btn btn-sm btn-primary  mb-2" data-role="add">
                    <i class="fa fa-plus"></i>
                </button>
                
                
            </div>  
        </div> 
    </div>
 </div>
</div>
$(function() {
    // Remove button click
    $(document).on(
        'click',
        '[data-role="appendRow"] > .form-inline [data-role="remove"]',
        function(e) {
            e.preventDefault();
            $(this).closest('.form-row').remove();
        }
    );
    // Add button click
    $(document).on(
        'click',
        '[data-role="appendRow"] > .form-row [data-role="add"]',
        function(e) {
            e.preventDefault();
            var container = $(this).closest('[data-role="appendRow"]');
            new_field_group = container.children().filter('.form-row:first-child').clone();
            container.append(new_field_group);
        }
    );
});
javascript html jquery twitter-bootstrap
1个回答
0
投票

删除一行时,仅删除不是第一个子元素的元素,即

[data-role="appendRow"] > .form-inline:not(:first-child) [data-role="remove"]
:

$(function() {
    // Remove button click
    $(document).on(
        'click',
        '[data-role="appendRow"] > .form-inline:not(:first-child) [data-role="remove"]',
        function(e) {
            e.preventDefault();
            $(this).closest('.form-row').remove();
        }
    );
    // Add button click
    $(document).on(
        'click',
        '[data-role="appendRow"] > .form-row [data-role="add"]',
        function(e) {
            e.preventDefault();
            var container = $(this).closest('[data-role="appendRow"]');
            new_field_group = container.children().filter('.form-row:first-child').clone();
            container.append(new_field_group);
        }
    );
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!------ Include the above in your HEAD tag ---------->

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!------ Include the above in your HEAD tag ---------->

<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>


<div class="container">
    
 <div class="form-group row custom-upload">

   
    <div class="col-md-12">
        <div data-role="appendRow">
            <div class="form-inline form-row">
            
              <input input type="text" class="form-control mb-2 mr-sm-2 col-sm-4" id="field-name" placeholder="Enter....">                          
                                    
                <button class="btn btn-sm btn-danger  mb-2" data-role="remove">
                 <i class="fa fa-minus"></i>
                </button>
                <button class="btn btn-sm btn-primary  mb-2" data-role="add">
                    <i class="fa fa-plus"></i>
                </button>
                
                
            </div>  
        </div> 
    </div>
 </div>
</div>

© www.soinside.com 2019 - 2024. All rights reserved.