如何删除AngularJS Material&输入按键事件?

时间:2018-05-25 11:05:06

标签: angularjs angularjs-material

有没有办法删除角度材质组件(如checkbox,select和datepicker)和enter keypress事件之间的交互?

<md-checkbox>
    check
</md-checkbox>

这是一个真实世界的Plunker示例。

任何帮助将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:2)

在ng-keydown上阻止KeyPress

您可以使用以下HTML标记阻止Enter keypress:

<md-checkbox ng-keydown="preventEnter($event)">
   check
</md-checkbox>

preventEnter函数看起来像(在Controller中声明):

function preventEnter(event) {
  if (event.keyCode == 13) { // enter keyCode
    event.preventDefault();
  }
}

自定义指令,以防止Enter keypress

如果您想在您的应用中更频繁地执行此操作,您可以根据需要使用自定义指令:

app.directive('myPreventEnter', function() {
  return function(scope, element, attrs) {
    element.bind("keydown", function(event) {
    if(event.keyCode === 13) {
      event.preventDefault();
    }
 });
};

然后您的所有输入都是:

<md-checkbox my-prevent-enter>...</md-checkbox>

答案 1 :(得分:1)

如果keyCode == 13

,则为默认事件添加EventListener和pevent
var checks = [...document.getElementsByTagName("md-checkbox")];
checks.forEach(function(c){
    c.addEventListener("keydown",
        function(e) { 
            if(e.keyCode === 13) e.preventDefault();
        }, 
    false);
});

http://plnkr.co/edit/SwsQMGMnxXerxvCaIYLG?p=preview