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

如何在angular.js中检测keydown或keypress事件?

薛墨一
2023-03-14
问题内容

我正在尝试获取手机号码文本框的值,以使用angular.js验证其输入值。我是使用angular.js的新手,但不确定如何实现这些事件,并在我的html代码上放了一些JavaScript来验证或操作表单输入。

这是我的HTML:

    <div>
        <label for="mobile_number">Mobile Number</label>
        <input type="text" id="mobile_number" placeholder="+639178983214" required
           ngcontroller="RegisterDataController" ng-keydown="keydown">
    </div>

而我的控制器:

    function RegisterDataController($scope, $element) {
       console.log('register data controller');
       console.log($element);
       $scope.keydown = function(keyEvent) {
        console.log('keydown -'+keyEvent);
       };
    }

我不确定如何在angular.js中使用keydown事件,我也搜索了如何正确使用它。我可以验证我对指令的输入吗?还是我应该像使用控制器那样使用诸如keydown或keypress之类的事件?


问题答案:

更新:

ngKeypressngKeydownngKeyup现在AngularJS的一部分。

<!-- you can, for example, specify an expression to evaluate -->
<input ng-keypress="count = count + 1" ng-init="count=0">

<!-- or call a controller/directive method and pass $event as parameter.
     With access to $event you can now do stuff like 
     finding which key was pressed -->
<input ng-keypress="changed($event)">

在这里阅读更多:

https://docs.angularjs.org/api/ng/directive/ngKeypress


https://docs.angularjs.org/api/ng/directive/ngKeydown


https://docs.angularjs.org/api/ng/directive/
ngKeyup

较早的解决方案:

解决方案1:ng-changeng-model

<input type="text" placeholder="+639178983214" ng-model="mobileNumber" 
ng-controller="RegisterDataController" ng-change="keydown()">

JS:

function RegisterDataController($scope) {       
   $scope.keydown = function() {
        /* validate $scope.mobileNumber here*/
   };
}

解决方案2.使用 $watch

<input type="text" placeholder="+639178983214" ng-model="mobileNumber" 
ng-controller="RegisterDataController">

JS:

$scope.$watch("mobileNumber", function(newValue, oldValue) {
    /* change noticed */
});


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

  • 问题内容: 我想对一个模拟占位符的指令进行单元测试,其中仅在键入/按下事件时才清除输入值。 问题答案: 您需要以编程方式创建一个事件并触发它。为此,将jQuery用于单元测试非常有用。例如,您可以编写一个简单的实用程序,如下所示: 然后在您的单元测试中使用它,如下所示: 您可以在http://angular-ui.github.io/bootstrap/项目中查看此技术的实际应用:https :

  • 问题内容: 我正在为AngularJS指令编写测试,该指令会在按下某些键时触发a事件。按照我的手动测试,一切正常。我想成为一个好人,也有完整的单元测试套件,但是遇到了一个我自己无法解决的问题: 我想送一个特定的在我的电话在我的测试,但我不能找到一种方法来指定键 ,实际工作 。我知道关于使用特定数据构建和发送事件的 许多 问题和解答,但是在我的设置中没有一个起作用: 我的设定 业力测试选手 运行测试

  • 本文向大家介绍如何在KineticJS管理的HTML5-Canvas中收听Keydown事件?,包括了如何在KineticJS管理的HTML5-Canvas中收听Keydown事件?的使用技巧和注意事项,需要的朋友参考一下 要监听KeyDown事件,请使用- 捕获KeyDown-

  • 我有一个包含5个步骤的多步骤表单。我希望用户能够使用enter键提交每个子表单,以触发验证,并在成功后移动到下一个子表单。我找不到这样做的方法。我在想,也许我可以将ng keydown事件添加到每个子窗体(或绑定到onkeydown的自定义指令),并观察回车键。 有没有人有过让它在角度上工作的经验?您将如何添加此功能? 下面是子表单的简单HTML示例。假设“下一步”按钮正在触发范围。nextSte

  • 问题内容: 我想做的是,每当用户停止在“项目名”字段中输入内容时进行一次ajax调用,并对照数据库进行检查,并显示一条错误消息,指出“它存在”。但是keypress事件不能按预期方式工作,首先它会忽略输入的第一个字母,结果单词没有完全发送到数据库。 这是我的: 这是HTML, 我可以做出哪些改进才能达到预期的效果? 问题答案: 按键工作正常,在文本框值更改之前进行按键操作。 看起来您所需要的方式不