JavaScriptJasmine:TriggerKeydown事件

JavaScriptJasmine:TriggerKeydown事件,jasmine,Jasmine,我试图在文本框上测试keydown事件,以确定提供的字符是否有效,但这是一项不可能完成的任务 我有一个选择器,如下所示: $('<input type="text" id="rwSearchText" />').appendBody('body'); 但keydown事件从未触发 有什么我遗漏的吗?我在谷歌上搜索过类似的场景,但我所做的似乎是正确的。任何帮助都将不胜感激。在您的测试中-是否附加HTML?根据给出的代码示例,在beforeach()函数中,我是。也许解决方案将是将测试

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

我有一个选择器,如下所示:

$('<input type="text" id="rwSearchText" />').appendBody('body');
但keydown事件从未触发


有什么我遗漏的吗?我在谷歌上搜索过类似的场景,但我所做的似乎是正确的。任何帮助都将不胜感激。

在您的测试中-是否附加HTML?根据给出的代码示例,在beforeach()函数中,我是。也许解决方案将是将测试拆分为两个测试-如果按下一些键,则启动附加侦听器,并测试附加侦听器-而不使用HTML。它不起作用,因为您已经输入了一些值,然后调用keydown-您的方法与keydown无关-值已经设置好了。
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(function ()
{
    rwSearchText = $("<input type=\"text\" id=\"#rwSearchText\" />").appendTo("body");
    addKeyDownEvent();
});
describe("rwSearchText", function() {

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

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

        var results = rwSearchText.val();

    });

});