首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对未从角指令触发的输入进行更改事件

对未从角指令触发的输入进行更改事件
EN

Stack Overflow用户
提问于 2014-06-22 22:02:03
回答 2查看 821关注 0票数 1

为什么当标记的输入元素失去焦点时,我从角指令中添加到输入元素中的更改事件不被触发?

更新:jqlite说 --“jQuery支持的操作的子集正在实现”.并且他们特别将.change列在事件处理程序下面。目前的答案与此相矛盾,但我希望听到作者明确地说“文档是错误的”,或者“您对文档的理解是错误的”。目前看来,他们已经浏览了前几行,没有走得更远。没有人知道我是否采取了一种不同的方式,而实际上还有另一个我没有发现的错误,而且我很容易再犯一次。

代码语言:javascript
运行
复制
app.directive('changeDirective', function() {
  return {
    link: function(scope, elem, attrs) {
      return elem.change(function() {
        alert("Change!");
      });
    }
  };
});

<html ng-app="plunker">
  <head>
    <script data-require="angular.js@1.2.x" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.min.js" data-semver="1.2.17"></script>
    <script src="app.js"></script>
  </head>
  <body>
    input with change listener<input type="text" change-directive="true">
    <br/>
    select this to remove focus from other input <input type="number">
  </body>
</html>

普朗克

EN

回答 2

Stack Overflow用户

发布于 2014-06-22 22:14:46

Angular.js使用jqLite作为jQuery的替代品,而且它不具备jQuery的所有功能。

jqLite是一个很小的、与API兼容的jQuery子集,它允许角度以跨浏览器兼容的方式操作DOM。jqLite只实现了最常用的功能,其目标是减少占用空间。

试着使用on方法来代替:

代码语言:javascript
运行
复制
return elem.on('change', function() {
    alert("Change!");
});

柱塞连杆

有关此链接的更多信息,请访问angular.element

以下是所有jqLite函数的列表

票数 0
EN

Stack Overflow用户

发布于 2014-06-22 22:21:14

首先,AngularJS使用jqLite,这是jQuery的一个子集,不包括.change方法。您应该使用.on代替。

其次,当元素失去焦点时,change事件不会触发。使用blur事件代替。如果使用blur方法,则可以同时使用.onchange事件。

代码:

代码语言:javascript
运行
复制
return elem.on('blur change', function() {
    alert('Change!');
});

柱塞演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24356158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档