0

在我写了一些东西之后,输入元素中的下面的代码 .chane() 事件将正常执行。

但是当我使用诸如左键之类的热键事件并更改输入值时, change() 事件在我手动更改输入值之前将不起作用。

为什么?

通过函数更改输入元素的值后,如何在输入元素上执行 change() 事件?

<script src="jquery-1.8.0.min.js"></script>
<script src="jquery.hotkeys.js"></script>

<script>
$(function(){

    $('input').change(function(){
        console.log('changed');
    }).bind('keydown', 'left', function(){
        $(this).val('test message');
    });

});
</script>

<input type="text" />
4

2 回答 2

0

您可以手动触发更改事件

$(function(){

    $('input').change(function(){
        console.log('changed');
    }).bind('keydown', 'left', function(){
        $(this).val('test message');
        $(this).change();
    });

});
于 2013-06-06T16:20:01.950 回答
0

我们也可以使用它:

$(function(){

    $('input').change(function(){
        console.log('changed');
        $(this).unbind('keydown.manuallbind');
    }).bind('keydown', 'left', function(){
        $(this).val('test message').blur(function(){
            $(this).change();
        }).bind('keydown.manuallbind','return',function(){
            $(this).change();
        });
    });

});

此规则的优点是 .change() 事件会在我们手动更改输入值时执行。

于 2013-06-06T16:47:41.003 回答