当前位置: 首页 > 面试题库 >

如何在angularjs单元测试中触发keyup / keydown事件?

呼延鹏云
2023-03-14
问题内容

我想对一个模拟占位符的指令进行单元测试,其中仅在键入/按下事件时才清除输入值。


问题答案:

您需要以编程方式创建一个事件并触发它。为此,将jQuery用于单元测试非常有用。例如,您可以编写一个简单的实用程序,如下所示:

  var triggerKeyDown = function (element, keyCode) {
    var e = $.Event("keydown");
    e.which = keyCode;
    element.trigger(e);
  };

然后在您的单元测试中使用它,如下所示:

triggerKeyDown(element, 13);

您可以在http://angular-ui.github.io/bootstrap/项目中查看此技术的实际应用:https :
//github.com/angular-ui/bootstrap/blob/master/src/typeahead/test/
typeahead.spec.js

免责声明 :准确点说:我不主张将jQuery与AngularJS一起使用!我只是说这是用于编写与DOM交互的测试的有用的DOM操作实用程序。

要使以上代码在 没有 jQuery的 情况下 工作,请更改:

$.Event('keydown')

至:

angular.element.Event('keydown')


 类似资料:
  • 问题内容: 模拟用户在JS和/或jQuery中的文本输入框中输入文本的最佳方法是什么? 我 不 希望居然把文本输入框,我只是想触发所有的事件处理程序,通常会得到用户输入信息到一个输入框触发。这意味着聚焦,按下键,按下键,按下键和模糊。 那么,一个人如何做到这一点呢? 问题答案: 您可以通过直接调用事件来触发任何事件,如下所示: 那会做你想做的事吗? 您可能还应该触发并可能 如果要使用特定键触发键事

  • 问题内容: 我在我的Web应用程序中同时使用了Bootstrap和AngularJS。我很难让两个人一起工作。 我有一个元素,它具有属性 我想在用户在字段中输入时更新属性。该函数已正确触发,但是除非我使用,这是jQuery方式,而不是AngularJS方式,否则我无法访问触发事件的元素。 使AngularJS与旧式JS模块一起工作的最佳方法是什么。 问题答案: 不会将DOM元素传递给函数。这里将参

  • 在我们开始学习键盘的相关内容之前,请注意,在现代设备上,还有其他“输入内容”的方法。例如,人们使用语音识别(尤其是在移动端设备上)或用鼠标复制/粘贴。 因此,如果我们想要跟踪 <input> 字段中的所有输入,那么键盘事件是不够的。无论如何,还需要一个名为 input 的事件来跟踪 <input> 字段中的更改。对于这样的任务来说,这可能是一个更好的选择。稍后我们将在 事件:change,inpu

  • 问题内容: 我有以下创建元素的AngularJS指令。输入具有运行功能的属性。在指令的单元测试中,我想检查用户更改输入时是否调用了函数。但是测试没有通过。虽然在手动测试时可以在浏览器中使用。 指示: 测试: 实时演示(ng-change):http : //plnkr.co/edit/0yaUP6IQk7EIneRmphbW?p=preview 现在,如果我手动绑定事件而不是使用属性,则测试通过。

  • 问题内容: 我正在尝试获取手机号码文本框的值,以使用angular.js验证其输入值。我是使用angular.js的新手,但不确定如何实现这些事件,并在我的html代码上放了一些JavaScript来验证或操作表单输入。 这是我的HTML: 而我的控制器: 我不确定如何在angular.js中使用keydown事件,我也搜索了如何正确使用它。我可以验证我对指令的输入吗?还是我应该像使用控制器那样使

  • 在JavaScript中,我按住两个键,并且被完美触发。当我释放其中一个键时,被触发。到目前为止一切都很好。但是我仍然按住一个键,那么为什么没有被触发呢?我需要在我的游戏中发生这种情况。我做错了什么吗?这是预期的反应吗?有什么解决办法吗?