前段时间我为jQuery写了一个输入掩码扩展,它自动过滤掉输入元素中的任何非十进制/整数值,我今天才发现,如果keyup事件改变了值,它不再调用onchange事件输入:
示例:http://jsfiddle.net/At8Ht/37/
如果您在Firefox中查看此内容,则会显示“Halp!”更改后输入下方,当输入模糊/失去焦点时,但在Chrome中则没有。
有没有人有任何建议?实际上我所要做的就是在用户输入大数字时自动插入逗号,例如在用户放开“2”键后输入“1552”会产生“1,552”。这在Chrome 11/12之前一直很好:(
答案 0 :(得分:2)
将change
更改为blur
$("#item").blur(function() {
$('#console').append('halp');
});
更新:
$("#item").blur(function() {
$('#console').append('halp');
$(this).trigger('change'); //trigger change
});
答案 1 :(得分:2)
您可以使用blur
执行此操作以及更多详细信息:
$("#item")
.focus(function() {
this.previousValue = this.value;
})
.keyup(function() {
this.value = new Date().getTime(); // or whatever magic code goes here
})
.blur(function() {
if (this.previousValue !== this.value) {
this.previousValue = this.value;
$('#console').append('halp');
}
});
答案 2 :(得分:1)
$("#item").focus(function() { this.oldValue = this.value; })
$("#item").keyup(function() {
$(this).get(0).value = 'NOPE!';
}).blur(function() {
if(this.value != this.oldValue){
$('#console').append('halp');
$(this).trigger('change'); //trigger change
}
});
(OLD VERSION)也许试试
.bind('keyup', function() {
$('#console').append('halp');
});
代替?
(BTW在我的firefox版本中,当你离开文本框时,它只显示“halp!”,而不是打字)
答案 3 :(得分:0)
这是这个问题的一个非常简单的例子...... 这是固定在铬14 ...但最多13有一个问题......
查看示例...即使在IE中也可以,但在chrome.ver< 14
最简单的解决方案是使用模糊而不是更改...