我们有一种情况,您希望仅在离开输入字段时才触发事件。这是因为事件导致像ajax请求一样的“回发”,而后者又会更新输入字段。变更事件将开始无限循环。
另一方面,无论字段是否被更改,每次用户离开字段时都会触发模糊事件。
我正在寻找的是一种“改变并且然后模糊”的事件,如果字段发生了变化,则会触发,但只有 时才会触发(模糊) )。
我认为jQuery没有开箱即用的功能。是否有任何简单的方法来扩展它?
更新 - 我刚刚尝试在简单的jsfiddle中重现无限循环的问题 - 无济于事。
涉及淘汰赛以及jQuery autoNumeric和自定义autoNumeric敲除绑定。使用ko.mapping更新值。但即使包含所有这些,我的jsfiddle似乎与简单的jQuery change
事件完美配合:http://jsfiddle.net/a1tbxnpp/
所以我想我宁愿用我的应用程序调查这个问题,这个问题会引入另一个jQuery事件。
答案 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');
}
});
});
我想没有比这更简单的答案......