如何触发模糊并连续运行所有输入?

时间:2014-08-04 12:46:19

标签: javascript jquery

我在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?

1 个答案:

答案 0 :(得分:0)

您的问题是blur事件的处理程序调用{​​{1}},它会触发每个单元格的row_validate()事件 - >无尽的循环。

您需要做的是将验证移动到仅验证的新功能。然后从模糊处理程序(单个单元格更改)和blur函数(行更改)调用此新函数。​​

验证功能本身不得触发任何事件!!