我正在尝试在文本框上测试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事件永远不会被解雇。
有什么我想念的吗?我用谷歌搜索了类似的场景,但我所做的似乎是正确的。任何帮助都会非常感激。