AngularJs - Очистить весь текст в поле ввода при нажатии кнопки возврата - PullRequest
0 голосов
/ 24 сентября 2018

прошли через веб-сообщения, но не хватило удачи, чтобы найти решение.Мое требование состоит в том, чтобы очистить весь номер счета, когда пользователь (удаляет самую правую цифру, 9 здесь, из номера счета, например: 12345678 9 ) нажимает клавишу Backspace от конца номера счета.Любая помощь будет принята с благодарностью.

Например: 12345678 9 .Нажмите клавишу Backspace на 9 , чтобы очистить всю учетную запись из текстового поля ввода.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Я думаю, что это имеет смысл в приложении, где вам нужно быстро вводить похожие цифры (возможно, на основе значения по умолчанию), но также необходимо быстро сбросить поле ввода.Вот небольшая директива для этого:

angular.module('myApp').directive('clearOnBackspace', function() {
  return {
    restrict: 'A',
    link: function(scope, element, attrs) {
      var length = attrs.clearOnBackspace || 9;
      element.on('keydown', function(e) {
        var key = e.keyCode || e.charCode;
        if (key == 8 && element[0].value.length == length) element[0].value = ''
      })
    }
  }
});
<input type="text" clear-on-backspace>  <!-- clear on 9th letter, the default -->
<input type="text" clear-on-backspace="5"> <!-- clear on 5th letter -->
0 голосов
/ 24 сентября 2018

Я также думаю, что это не очень хорошая практика, но если вы хотите сделать это, вы можете использовать $ scope. $ Watch для отслеживания изменений на входе и сравнения нового значения ввода с предыдущим значением.substring (0, length -1)

  $scope.$watch('data', function(newValue, oldValue) {
    if(oldValue != undefined && newValue != undefined){
        if(oldValue.substring(0, oldValue.length - 1) == newValue){
          $scope.data = "";
        }
    }
  });

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...