0

何かを書いた後のinput要素の以下のコードで.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');
        $(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 に答える
0

変更イベントを手動でトリガーできます

$(function(){

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

});
于 2013-06-06T16:20:01.950 に答える