jQuery change-and-then-blur事件

时间:2014-10-22 11:32:25

标签: jquery events blur

我们有一种情况,您希望仅在离开输入字段时才触发事件。这是因为事件导致像ajax请求一样的“回发”,而后者又会更新输入字段。变更事件将开始无限循环。

另一方面,无论字段是否被更改,每次用户离开字段时都会触发模糊事件。

我正在寻找的是一种“改变并且然后模糊”的事件,如果字段发生了变化,则会触发,但只有 时才会触发(模糊) )。

我认为jQuery没有开箱即用的功能。是否有任何简单的方法来扩展它?

更新 - 我刚刚尝试在简单的jsfiddle中重现无限循环的问题 - 无济于事。

涉及淘汰赛以及jQuery autoNumeric和自定义autoNumeric敲除绑定。使用ko.mapping更新值。但即使包含所有这些,我的jsfiddle似乎与简单的jQuery change事件完美配合:http://jsfiddle.net/a1tbxnpp/

所以我想我宁愿用我的应用程序调查这个问题,这个问题会引入另一个jQuery事件。

2 个答案:

答案 0 :(得分:2)

为什么不使用焦点和模糊。在焦点上将输入字段的值保存在变量中。模糊比较输入的值与变量,如果它与ajax调用不同。

答案 1 :(得分:1)

嗯......回答我自己的问题,我刚刚尝试了以下内容,它似乎首先起作用:

$(":input").each(function() {
    var $el = $(this),
        oldValue = $el.val();

    $el.focus(function() {
        oldValue = $el.val();
    });

    $el.blur(function() {
        var newValue = $el.val();
        if (oldValue != newValue) {
            $el.trigger('changeblur');
        }
    });
});

我想没有比这更简单的答案......