Подтвердить что ты не робот

Запретить действие ng-click при нажатии

Я написал директиву timepicker, где я могу ввести время, и если я нажму Enter, значение будет отформатировано в определенном формате времени. Также вход будет размытым. Все работает отлично.

Проблема в том, что у меня также есть несколько кнопок в форме с директивой ng-click. И если я ударил Enter, действие директивы ng-click также будет вызвано. Хотя я запускаю e.preventDefault();

Это код моей директивы:

$element.keyup(function(e) {
  var keyCode = e.keyCode || e.witch;

  if (keyCode == 13) {
    $element.blur();

    // Do some more stuff here
    e.preventDefault();
    return false;
  }
});

И код HTML:

<button class="btn btn-default" ng-click="openModal()">
  <i class="icon-info-sign"></i>
</button>

Самое смешное, что директива timepicker работает так, как ожидалось, и будет вызываться дополнительная функция openModal(). Как это предотвратить?

4b9b3361

Ответ 1

Ваша кнопка нуждается в type="button". По умолчанию это type="submit", поэтому он вызывается при отправке формы.

Также кажется, что вам нужно предотвратить отправку формы при нажатии кнопки ввода, но это другая проблема.