html - 如何检测 angular.js 中的 keydown 或 keypress 事件?

标签 html twitter-bootstrap angularjs angularjs-directive

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

这是我的 HTML:

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

还有我的 Controller :

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

我不确定如何在angular.js中使用keydown事件,我也搜索了如何正确使用它。我可以验证我对指令的输入吗?或者我应该像我所做的那样使用 Controller 来使用 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 */
});

关于html - 如何检测 angular.js 中的 keydown 或 keypress 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360202/

相关文章:

PHP-HTML 使用 input=text 更新 mysql,其中 POST ['submit' ]

javascript - 如何创建 iframe 的 Bootstrap 轮播?

html - Bootstrap 导航栏 - 社交媒体右上角

html - Bootstrap 和固定 iframe

javascript - TypeError : d. $$minErr 不是 angular-route.min.js 中的函数

javascript - 在 Angular Js 中重新加载后,如何将复选框(选中或未选中)从 javascript Controller 更新为 html 页面?

html - 样式 woocommerce 描述

html - 水平和垂直无间距对齐图像

twitter-bootstrap - Bootstrap 电子邮件验证

javascript - 如何在AngularJS中动态加载弹出窗口?