我正在开发输入表。
我想要的是:使用时按“ +”键(光标在表格行中的任何位置),应用程序都会在表格中添加新行。
这样做很好:

<tr ng-repeat="sell in sells"  ng-keypress="newLine($event)">


我的问题是,当用户在行的输入中按Tab键转到下一个输入时,下一个输入值将突出显示(这是Tab键的正常行为)。
然后,如果用户按“ +”添加新行,则它将输入的值替换为“ +”号。

我已经设置了一条指令,只允许用户在输入中键入数字,但是当输入值突出显示时,它将不起作用。

angular.module('myApp').directive('numbersOnly', function($timeout) {
   return {
     require: 'ngModel',
     link: function(scope, element, attrs, modelCtrl) {
       modelCtrl.$parsers.push(function (inputValue) {
           // this next if is necessary for when using ng-required on your input.
           // In such cases, when a letter is typed first, this parser will be called
           // again, and the 2nd time, the value will be undefined
           if (inputValue == undefined) return ''
           var transformedInput = inputValue.replace(/[^0-9.]+/g, '');
           if (transformedInput!=inputValue) {
              modelCtrl.$setViewValue(transformedInput);
              modelCtrl.$render();
           }

           return transformedInput;
       });
     }
   };
});

<td style="width:59px"><input type="text" ng-model="sell.quantity" numbers-only enter-as-tab ></td>


如果有人知道一种方法来防止用户用“ +” ....替换突出显示的值,或者禁用Tab键的默认行为。

javascript - Angular.js:禁用Tab键默认行为-LMLPHP

提前致谢。

最佳答案

您可以使用自定义指令覆盖“ +”键的默认操作。

module.directive('overridePlusKey', ['$window', function ($window) {
    // Linker function
    return function (scope, element, attrs) {
      element.bind('keydown', function (e) {
        var keyCode = e.keyCode || e.which;
        console.log(keyCode);
        if (keyCode == 107 || keyCode == 187)
        {
          e.preventDefault();
          // Your code here to add a row
        }
      });
    };
  }]);


然后将其应用于输入,如下所示:

<input type="text" ng-model="content" override-plus-key />


See here for an example

关于javascript - Angular.js:禁用Tab键默认行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34879277/

10-09 13:50