【发布时间】:2020-09-16 08:54:24
【问题描述】:
我想动态生成输入。搜索了几乎所有样本,它们通过单击按钮生成输入。没关系,但我需要一些不同的东西。当用户开始输入输入时,我想创建第二个输入,当用户输入第二个时,然后像这样创建第三个输入..
我的问题是当用户输入输入时,它会创建许多输入(字母计数=输入)。我必须立即解决这个问题。我尝试了一些技巧,但他们无法工作。感谢您的帮助。你可以在 Codepen 中查看。
<div class="container1">
<button class="add_form_field">
Add New Field
<span style="font-size: 16px; font-weight: bold;">+ </span>
</button>
<div class="divInput firstChild">
<input type="text" autocomplete="off" name="mytext[]" />
</div>
</div>
$(document).ready(function () {
var max_fields = 10;
var wrapper = $(".container1");
var add_button = $(".add_form_field");
var inputs = document.querySelectorAll(".divInput");
let xs = [];
var x = 1;
$(add_button).click(function (e) {
e.preventDefault();
if (x < max_fields) {
x++;
$(wrapper).append(
'<div class="divInput"><input type="text" autocomplete="off" name="mytext[]"/><a href="#" class="delete"></a></div>'
); //add input box
} else {
alert("You Reached the limits");
}
});
$(wrapper).on("keyup", "input", function (e) {
e.preventDefault();
if ($(this).val() == "") {
//when user cleaned input then delete it
$(this).parent("div").remove();
x--;
return;
} else if ($(this).val() != "") {
//dont use click check if length>0 then use this trick to add new input
$(add_button).trigger("click");
return;
}
if (x == 0) {
//if user tries to delete last input then create a new one
console.log("xx", x);
$(wrapper).append(
'<div class="divInput"><input type="text" autocomplete="off" name="mytext[]"/><a href="#" class="delete"></a></div>'
); //add input box
x = 1;
console.log("xx", x);
return;
}
});
});
【问题讨论】:
标签: javascript html jquery reactjs web