在输入元素上运行热键事件后,更改事件不执行 - jquery

时间:2013-06-06 16:17:03

标签: jquery onchange jquery-hotkeys

在我写一些东西之后输入元素中的下面的代码.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" />

2 个答案:

答案 0 :(得分:0)

您可以手动触发更改事件

$(function(){

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

});

答案 1 :(得分: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()事件执行时,例如当我们手动更改输入值时。