javascript - 如何为 jQuery 动态文本框的项目编号
问题描述
我正在制作一个动态文本框表单。这是代码:
$(document).ready(function() {
counter = 1;
}).on('click', '.btn-add', function(e) {
e.preventDefault();
counter = counter + 1;
var controlForm = $('.controls'),
currentEntry = $(this).parents('.entry:last'),
newEntry = $(currentEntry.clone()).appendTo(controlForm);
newEntry.find('input').val('');
controlForm.find('.entry:not(:first) .btn-add')
.removeClass('btn-add').addClass('btn-remove')
.removeClass('text-success').addClass('text-danger')
.html('-');
currentEntry.find('.input-box')
.attr('name', 'subject')
.attr('placeholder', 'Materia ' + String(counter));
}).on('click', '.btn-remove', function(e) {
$(this).parents('.entry:last').remove();
counter = counter - 1
$(this).parents('.entry').each(function() {
$(this).parents('.entry:last').attr('placeholder', 'Materia ' + String(counter));
})
e.preventDefault();
return false;
});
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="type-elements" class="controls">
<div class="form-row entry">
<div class="form-inline mb-3">
<a role="button" class="btn btn-link text-success btn-add mr-1" href="">+</a>
<input type="text" class="form-control mr-1 input-box" placeholder="Materia 1" required name="subject">
</div>
<div class="col">
<select class="custom-select mb-3" required multiple size="3" name="classes">
<option disabled>Seleziona una o più classi</option>
<option>2DM</option>
<option>2AM</option>
<option>2DM</option>
<option>2AM</option>
</select>
</div>
</div>
</div>
如何为每个文本框提供一个动态数字,并且当我单击加号按钮时,将新文本框直接添加到第一个主文本框下方?
解决方案
使用prepentTo
代替appendTo
$(document).ready(function() {
counter = 1;
}).on('click', '.btn-add', function(e) {
e.preventDefault();
counter = counter + 1;
var controlForm = $('.controls'),
currentEntry = $(this).parents('.entry:last'),
newEntry = $(currentEntry.clone()).prependTo(controlForm);
newEntry.find('input').val('');
controlForm.find('.entry:not(:first) .btn-add')
.removeClass('btn-add').addClass('btn-remove')
.removeClass('text-success').addClass('text-danger')
.html('-');
currentEntry.find('.input-box')
.attr('name', 'subject')
.attr('placeholder', 'Materia ' + String(counter));
}).on('click', '.btn-remove', function(e) {
$(this).parents('.entry:last').remove();
counter = counter - 1
$(this).parents('.entry').each(function() {
$(this).parents('.entry:last').attr('placeholder', 'Materia ' + String(counter));
})
e.preventDefault();
return false;
});
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="type-elements" class="controls">
<div class="form-row entry">
<div class="form-inline mb-3">
<a role="button" class="btn btn-link text-success btn-add mr-1" href="">+</a>
<input type="text" class="form-control mr-1 input-box" placeholder="Materia 1" required name="subject">
</div>
<div class="col">
<select class="custom-select mb-3" required multiple size="3" name="classes">
<option disabled>Seleziona una o più classi</option>
<option>2DM</option>
<option>2AM</option>
<option>2DM</option>
<option>2AM</option>
</select>
</div>
</div>
</div>
推荐阅读
- security - 从 SNMP 探测变量中检索数据
- node.js - 我怎样才能让http调用保持一段时间?
- python-3.x - 几天以来一直在苦苦挣扎,这个“继续”语句如何留下“a”并打印其余的信
- python-3.x - Drop NaN values but not the entire column
- python - Docker运行python脚本找不到本地安装的模块
- list - How can i iterate a list in elixir to make another list?
- typescript - Is it possible to extract parts of a larger type into subtypes?
- c# - RowIndex 在 ContextMenuStrip 中返回错误
- python - Git合并:冲突我不知道如何解决
- firebase - 如何在 Flutter 的抽屉小部件中更新用户的个人资料名称?