我在jQuery中遇到触发器问题。它会触发太多次。
我有一个每行有11个输入的表。当我改变行时,我需要脚本在我离开的行中每个输入触发一次模糊。
我的主要事件处理程序如下所示:
$('#auto_insert').on('blur', 'input.autoupdate', function (event) {
event.stopPropagation();
event.preventDefault();
rid = $(this).closest('tr').attr('id');
row_validate(rid);
});
$('#auto_insert').on('focus', 'input.autoupdate', function (e) {
e.stopPropagation();
e.preventDefault();
newid = $(this).closest('tr').attr('id');
check();
});
函数row_validate
用于验证,需要连续遍历所有输入:
function row_validate(rid) {
$('#auto_insert #' + rid + ' td input.autoupdate').each(function () {
$(this).trigger('blur');
});
}
有关它为何无法工作的任何建议吗?
它主要做它应该做的事情,但它不断循环,我不确定为什么。
新信息:
它似乎是一种massibe bubbeling效果,使我的验证失控。 有没有办法防止它冒出我的tr?
答案 0 :(得分:0)
您的问题是blur
事件的处理程序调用{{1}},它会触发每个单元格的row_validate()
事件 - >无尽的循环。
您需要做的是将验证移动到仅验证的新功能。然后从模糊处理程序(单个单元格更改)和blur
函数(行更改)调用此新函数。
验证功能本身不得触发任何事件!!