我正在使用(for)添加多个输入表单 我想用keyup检查这个表单 但它总是只检查第一个表格
这是代码
for (i = 0; i < 5; i++) {
$('input[name*="morein"]').keyup(function () {
var value = $(this).val();
var moreincheck = $("#moreincheck");
if (value > 60) {
moreincheck.css('display', 'block');
moreincheck.text("error cant add more than 60");
} else {
moreincheck.css('display', 'none');
}
}).keyup();
$("#divTxt").append('<inputname="morein[]" type="text" />' + '<span id="moreincheck" class="checkerror"></span>');
}
答案 0 :(得分:1)
使ID唯一,或者您可以使用类,并将事件绑定部分从循环中分离出来。
for (var i = 0; i < 5; i++) {
$("#divTxt")
.append('<input name="morein[]" type="text" class="morein" />')
.append('<span class="checkerror"></span>');
}
// bind the event handler
$('input.morein').keyup(function () {
var $this = $(this);
var moreincheck = $this.next('.checkerror');
// use .length to check the length
if ($this.val().length > 60) {
moreincheck.text("error cant add more than 60").show();
} else {
moreincheck.hide();
}
});
的 The working demo. 强> 的
答案 1 :(得分:0)
ID必须唯一! (你注意到了原因)。此外,您将在每次迭代中向所有input[name*="morein"]
重新添加相同的事件处理程序。
最好首先创建元素,绑定事件处理程序并使用DOM遍历来查找相应的元素。例如:
for (i = 0; i < 5; i++) {
$('<input name="morein[]" type="text" /><span class="checkerror"></span>').appendTo('#divTxt');
}
$('input[name*="morein"]').keyup(function () {
var value = $(this).val();
var moreincheck = $(this).next('span.checkerror');
if (value > 60) {
moreincheck.css('display', 'block');
moreincheck.text("error cant add more than 60");
} else {
moreincheck.css('display', 'none');
}
});