Angularjs输入字段焦点事件?

Posted

技术标签:

【中文标题】Angularjs输入字段焦点事件?【英文标题】:Angularjs input field focus event? 【发布时间】:2014-10-27 07:03:37 【问题描述】:

我使用 angularjs,我创建了一个像这样的普通输入字段:

<input type="text" style="border: none" ng-model="model" >

我想做以下事情:

如果有人单击输入字段,我想调用例如方法 A。然后他在此字段中写入文本,如果该人单击我页面中的某个位置以使输入字段不再集中,则应调用方法 B。这可能与 angularjs 吗?如果是,我该怎么做? ng-focus 仅在输入事件时有效,但在输出时无效..

我想用这个锁定一些东西,方法 A 只将一个值设置为 true,而方法 B 将相同的值设置为 false。但我必须知道输入字段何时有效,何时无效。

【问题讨论】:

【参考方案1】:

您正在查看ng-focusng-blur

<input type="text" style="border: none" ng-model="model" ng-focus="A()" ng-blur="B()">

顺便说一句,使用 css 类而不是内联样式.. :)

或者只是用参数调用相同的方法并设置值 acc:-

 <input type="text" style="border: none" ng-model="model" ng-focus="A(true)" ng-blur="A(false)">

【讨论】:

【参考方案2】:

如果您使用的功能可能希望应用于整个应用程序的字段,则可以将其放入指令中。 这是一个基于字段的焦点或模糊添加和删除 css 类的示例:

angular.module('myApp').directive('inputFocus', function () 

var FOCUS_CLASS = 'input-focused';
return 
  restrict: 'A',
  priority: 1,
  require: 'ngModel',
  link: function (scope, element, attrs, ctrl) 
    element.bind('focus',function () 
      element.parent().addClass(FOCUS_CLASS);    
    ).bind('blur', function () 
      element.parent().removeClass(FOCUS_CLASS);
    );
  
;
);

【讨论】:

漂亮而整洁 - 你也可以使用来自 jQuery 的 element.focus()element.blur(),这样会更整洁。【参考方案3】:

您可以将方法 B 绑定到 angular 的 ng-blur 指令,以检测输入何时失去焦点

<input type='text' ng-focus='methodA()' ng-blur='methodB()' ng-model='model'>

【讨论】:

以上是关于Angularjs输入字段焦点事件?的主要内容,如果未能解决你的问题,请参考以下文章

Angular2动态输入字段在输入更改时失去焦点

Angular2:尝试使用 @ViewChild 注释将焦点设置到输入字段时出现未定义的错误

Angular - 如何以百分比形式制作输入字段格式,但在编辑时删除百分比?

AngularJS - 三输入字段电话号码验证

AngularJS 输入验证

失去焦点事件啥意思