7

入力すると自動的に「修正」されるフィールドがあります。矢印キーが押されたときにこの機能を防止するコードがいくつか書かれています。

handleKeyUp: function(e) {
    var arrowKeys = _.range(37, 41),
        key = e.which;

    // allow user to move cursor by keyboard
    if ($.inArray(key, arrowKeys) < 0) {
        this.removeInvalidCharacters();
    }
},

このための単体テストを書きたいと思います。e.whichただし、経由で渡す方法がわかりません$input.trigger('keyup')。トリガーの 2 番目のパラメーターを使用すると、「追加のオプション」を送信できることはわかっています。ただし、それは値をhandleKeyUp関数に渡すだけです。アイデア?

4

2 に答える 2

14

これを試して -

var e = $.Event("keyup");
e.which = 37; 
$input.trigger(e);

http://api.jquery.com/category/events/event-object/

jQuery 1.6 では、オブジェクトを jQuery.Event() に渡すこともでき、そのプロパティは新しく作成された Event オブジェクトに設定されます。

// Create a new jQuery.Event object with specified event properties.
var e = jQuery.Event("keydown", { keyCode: 64 });

// trigger an artificial keydown event with keyCode 64
jQuery("body").trigger( e );
于 2013-05-02T22:06:46.203 に答える
0

handleKeyUpイベント オブジェクトまたは整数のいずれかを受け入れることができます。keyのタイプに応じて、何であるかを定義するために余分な行を追加するだけですe。その後、単体テストを実行できますhandleKeyUp(40)keyupもちろん、これは、単体テストの目的が入力のハンドラーをテストすることではないことを前提としています。

于 2013-05-02T22:07:04.733 に答える