相关疑难解决方法(0)

使用jQuery触发按键事件的明确方法

我已经阅读了关于这些问题的所有答案,但没有一个解决方案似乎有效.

此外,我正在获得触发按键的特殊字符的氛围根本不起作用.有人可以验证谁做了这个吗?

jquery events triggers keypress

254
推荐指数
5
解决办法
27万
查看次数

如何使用JavaScript检测Ctrl + V,Ctrl + C?

如何使用Javascript 检测ctrl+ v,ctrl+ c

我需要限制粘贴在我的textareas中,最终用户不应该复制和粘贴内容,用户应该只在textarea中键入文本.

怎么做到这一点?

html javascript jquery

158
推荐指数
8
解决办法
24万
查看次数

如何在javascript中合成按键

我想在文本框中为一些输入过滤代码编写一些测试.对于大多数测试,我可以调用setValue并触发更改事件,这很容易做到.但是,在这种情况下,因为我想测试输入被过滤掉(或不过滤),我不能setValue()直接.

我尝试调度keydown,keyup,keypress,textinput事件.我可以看到它们的处理程序被调用,但文本实际上没有显示在文本框中注意,这只在Firefox中"有用",我理解代码对于其他浏览器看起来会有所不同.

function dispatch(target, eventType, charCode) {
   var evt = document.createEvent("KeyboardEvent");
   evt.initKeyEvent(
     eventType,
     true,
     true,
     window,
     false,
     false,
     false,
     false,
     charCode,
     0
   );
   target.dispatchEvent(evt);
}


var id = document.getElementById('id');
id.onkeydown = id.onkeyup = id.onkeypress = function() {console.log(arguments)}

dispatch(id, 'keydown', 65);
dispatch(id, 'keyup', 65);
dispatch(id, 'keypress', 65);
dispatch(id, 'textinput', 65);
// I can see the handlers were called but it doesn't display in the text box
Run Code Online (Sandbox Code Playgroud)

我知道这有限制,因为我们不希望网络应用程序只是假装他们正在为用户行事.但是,这是为了测试我自己的应用程序,我可以使用特定的配置文件启动firefox并安装插件,如果我知道它会有所帮助,甚至可以自己编写.

我所追求的是避免使用Selenium,我想让Java远离我的JS测试,因为它不仅速度慢,而且还必须重新实现Java中的大量DOM查询.

毕竟,问题是,是否有人知道如何让代码实际修改输入?调整设置,安装插件?

没有回答我的问题的问题列表

javascript keypress javascript-events

8
推荐指数
1
解决办法
1341
查看次数

模拟TDD JavaScript的用户输入

我发现使用jQuery或本机元素触发器函数模拟实际用户事件越来越困难.例如,如果您有文本输入并且不希望用户能够添加字符,则可以e.preventDefault()使用事件上的jQuery规范化事件对象进行调用keydown.但是,无法以编程方式验证此测试方案.

即使没有调用,以下测试也会通过,preventDefault因为jQuery keydown触发器不是"真实"事件.

input.val('test').trigger(jQuery.Event({
    which: 68
});
expect(input).toHaveValue('test');
Run Code Online (Sandbox Code Playgroud)

如果没有正确的代码,此测试应该失败,因为输入的值应为'testd'(68是'd'的字符代码).

有没有人知道任何方法或库来模拟真实的浏览器UI事件?

javascript tdd unit-testing jasmine

6
推荐指数
1
解决办法
7546
查看次数