JavaScript Jasmine:触发keydown事件

时间:2015-03-30 14:08:07

标签: jasmine

我正在尝试在文本框上测试keydown事件,以确定提供的字符是否有效,但这结果证明这是一项不可能完成的任务。

我有一个选择器,就像这样:

$('<input type="text" id="rwSearchText" />').appendBody('body');

我有一个函数,它定义了对有效键的检查:

var addKeyDownEvent = function() {

    $('#rwSearchText').keydown(function(event) {

        var keyCode = event.which;

        if ((keyCode > 64 && keyCode < 91) || keyCode === 189 || keyCode === 222 || keyCode === jQuery.ui.keyCode.BACKSPACE
            || keyCode === jQuery.ui.keyCode.DELETE || keyCode === jQuery.ui.keyCode.SPACE
            || keyCode === jQuery.ui.keyCode.LEFT || keyCode === jQuery.ui.keyCode.RIGHT
            || keyCode === jQuery.ui.keyCode.SHIFT || keyCode === jQuery.ui.keyCode.END
            || keyCode === jQuery.ui.keyCode.HOME) {
            return true;
        }
        else {
            return false;
        }

    });

};

我在beforeEach()方法中调用它以及appendTo('body')来创建我需要测试的文本框:

beforeEach(function ()
{
    rwSearchText = $("<input type=\"text\" id=\"#rwSearchText\" />").appendTo("body");
    addKeyDownEvent();
});

rwSearchText是全局定义的。

然后在我的定义中 - &gt;它('@不应该被允许',function(){});我手动触发了keydown:

describe("rwSearchText", function() {

    it("single dash should be allowed", function() {

        rwSearchText.val('&');
        rwSearchText.trigger('keydown');

        var results = rwSearchText.val();

    });

});

但keydown事件永远不会被解雇。

有什么我想念的吗?我用谷歌搜索了类似的场景,但我所做的似乎是正确的。任何帮助都会非常感激。

0 个答案:

没有答案