2 回答
TA贡献1772条经验 获得超5个赞
问题 2 和 3 非常简单。您只需要在删除成员时递减变量。另外,当.i
i>=7
$(document).ready(function() {
var i = 1;
$('#add').click(function() {
if (i <= 7) {
$('#dynamic_field').append('<div id="row' + i + '"><label" for="member_' + i + '">Member ' + i + '</label><input type="text" name="member_' + i + '" value=""><button type="button" class="btn_remove" name="remove" id="' + i + '">X</button></div>')
i++;
}
});
$(document).on('click', '.btn_remove', function() {
var button_id = $(this).attr("id");
i--;
$('#row' + button_id + '').remove();
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" name="add" id="add">Add Other Members</button>
<div id="dynamic_field"></div>
使用此方法时会遇到的问题是,删除列表中间的元素会弄乱顺序。您最终会得到重复的元素。
您可以通过仅允许删除最后一个元素来解决此问题。
$(document).ready(function() {
var i = 1;
$('#add').click(function() {
if (i <= 7) {
$('#dynamic_field').append('<div id="row' + i + '"><label" for="member_' + i + '">Member ' + i + '</label><input type="text" name="member_' + i + '" value=""></div>')
i++;
$('.btn_remove').removeClass('hidden');
}
});
$(document).on('click', '.btn_remove', function() {
var button_id = $(this).attr("id");
i--;
$('#row' + $('#dynamic_field div').length).remove();
if (i<=1) {
$('.btn_remove').addClass('hidden');
}
});
});
.hidden {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" id="add">Add Other Members</button>
<div id="dynamic_field"></div>
<button type="button" class="btn_remove hidden">Remove last</button>
关于第一个问题,我猜双花括号是服务器端模板的东西(就像Laravel的Blade一样)。在这种情况下,它是在将页面发送到客户端之前在服务器端生成的。这意味着,在JS有机会被执行之前。您的服务器端代码不知道 。i
如果您使用 PHP 在服务器中生成元素,则不能使用 ,因为服务器端不知道该变量。但是,你不应该需要它。i
如果您使用JS动态生成元素,则不能在其中使用PHP模板。为时已晚,代码已在客户端中执行。您可以做的是使用PHP创建一个JS对象,其中包含创建元素所需的所有信息。像这样:
echo "<script>var myJsData=" . json_encode($myPHPdata) . ";</script>";
然后,您可以使用它通过JS在客户端中动态生成元素。
TA贡献1993条经验 获得超5个赞
好的,你需要做3件事:
获取创建的输入,以便对下一个索引进行计数和获取下一个索引
插入次数
获取上次创建的用于重置计数器的输入,但避免重复的 ID 和名称
$(document).ready(function() {
var i=0;
$('#add').click(function() {
// Get inputs created (if any)
var inputs = $('input');
// Verify if there are 7 or more inputs
if(inputs.length >= 7) {
console.log('Only seven inputs allowed');
return;
}
// Get last input to avoid duplicated IDs / names
if(inputs.last().length > 0) {
// Split name to get only last part of name, the numeric one
i = parseInt(inputs.last()[0].name.split('_')[1]);
}
i++;
$('#dynamic_field').append('<div id="row'+i+'"><label" for="member_'+ i +'">Member '+ i +'</label><input type="text" name="member_' + i + '" value=""><button type="button" class="btn_remove" name="remove" id="'+ i +'">X</button></div>')
});
$(document).on('click', '.btn_remove', function() {
var button_id = $(this).attr("id");
$('#row' + button_id + '').remove();
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" name="add" id="add">Add Other Members</button>
<div id="dynamic_field"></div>
- 2 回答
- 0 关注
- 91 浏览
添加回答
举报