jQuery 'change'事件

3

如何检测用户使用鼠标(触控板)从剪贴板中插入文本时文本字段的更改?在这种情况下,“change”,“keyup”和“click”事件不会被触发。Twitter是如何实现的?

3个回答

3

如果传统的事件不起作用,您可能需要设置某种类型的轮询系统:

$('input').focus(function(){
    setInterval(function(){
        if (this.value != $.data(this, 'oldVal')) {
            $(this).trigger('change');
        }
    }, 250);
}).change(function(){
    $.data(this, 'oldVal', this.value);

    // do your onchange code here
});

3

嗯... onpastekeyup 差不多,只是按下了两个键 :). 你可以将更改事件最小化为 keyupclick - user57508
2
@Andreas:尝试使用上下文菜单(右键单击并选择“粘贴”)粘贴文本。既不会触发“keyup”也不会触发“click”。 - volpav
@volpav:我使用了太过通用的 click - 这是我的错误... mousedown 可以捕获各种点击(无论是左键、中键还是右键...)。 - user57508
@Andreas:如果您使用TAB键导航到字段,然后按下键盘上的“上下文菜单”按钮-上下文菜单将出现 :-) - volpav
@Andreas:好的,也许这只是所需交互类型的问题。如果您需要在用户更改值后立即执行某些操作(而不是在字段失去焦点时),那么“模糊”将无法帮助。 - volpav
显示剩余5条评论

0
我会使用blur来实现这个功能。

演示链接

var control = $('#txt');
control.blur(function() {
    var defaultValue = control.attr('defaultValue');
    var actualValue = control.val();
    if (defaultValue != actualValue) {
        control.css('background-color', 'red');
    }
});

@Azat:那你的条件/要求在哪里呢? :) - user57508

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接