使用 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);
}
);
});
删除一行时,仅删除不是第一个子元素的元素,即
[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>