只要输入发生变化,AngularJS ng就会发生变化

时间:2015-09-21 09:49:59

标签: javascript angularjs

我的输入类型为email

<input type="email" ng-model="user.email" name="email" required>

现在我需要执行一些代码每当输入更改时。添加ng-change="emailInputChanged()"仅执行我的方法,以防输入的字符串是有效的电子邮件地址,但我需要使用每次按键执行回调,即使输入不是验证。 (同样的问题当然是在观看模型的时候$scope.$watch('user.email', emailInputChanged)

任何有角度的方式吗?

3 个答案:

答案 0 :(得分:2)

由于您已将类型指定为电子邮件,因此仅当其有效时才会调用 ng-change ,因此请删除类型属性

答案 1 :(得分:2)

请改用ng-keyup。即使使用基本(本机或jQuery)事件,这也是相同的,因为表单只会对场模糊做出正常反应。

要捕获粘贴事件,请使用ng-paste指令(请参阅https://code.angularjs.org/1.4.6/docs/api/ng/directive/ngPaste

答案 2 :(得分:2)

我建议使用onInput事件:http://www.w3schools.com/jsref/event_oninput.asp 创建一个自定义指令并监听&#34;输入&#34;文本字段元素上的事件。

指令实施示例:

function OnInput() {
  return {
    restrict: 'A',
    template: '',
    scope: {
      whenInputChanged: '&'
    },
    link: function($scope, $element, $attrs) {
      $element.on('input', $scope.whenInputChanged);
    }
  };
}

angular.module('App')
  .directive('onInput', OnInput);

要在模板中应用事件侦听器:

<input type="email" on-input when-input-changed="change()" name="email" required/>

享受!