我正在开发输入表。
我想要的是:使用时按“ +”键(光标在表格行中的任何位置),应用程序都会在表格中添加新行。
这样做很好:
<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键的默认行为。
提前致谢。
最佳答案
您可以使用自定义指令覆盖“ +”键的默认操作。
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/