Как удалить любое взаимодействие между AngularJS Material и событием нажатия клавиши ввода? - PullRequest
0 голосов
/ 25 мая 2018

Есть ли способ удалить взаимодействие между угловыми компонентами материала (например, флажок, выбор и указатель даты) и событие нажатия клавиши ввода?

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

Вот Плунжер дляПример из реальной жизни.

Любая помощь будет оценена.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Добавьте EventListener и pevent для события по умолчанию, если keyCode == 13

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

0 голосов
/ 25 мая 2018

Предотвращение нажатия клавиш при ng-keydown

Вы можете запретить ввод нажатия клавиш со следующей разметкой HTML:

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

Функция preventEnter выглядит (объявлена)в вашем контроллере):

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

Настраиваемая директива для предотвращения нажатия клавиши Enter

Если вы хотите сделать это более широко в своем приложении, то пользовательская директива - это то, что вашанужно, вы можете:

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>
...