Я разрабатываю таблицу входов.
Что я хочу: при использовании прессов '+' key (где курсор находится в строке таблицы) приложение добавляет новую строку в таблицу.
Он прекрасно работает как это сделать:Angularjs: отключить поведение клавиши табуляции
<tr ng-repeat="sell in sells" ng-keypress="newLine($event)">
Моя проблема заключается в том, что, когда пользователь нажимает клавишу табуляции во входе в строке, чтобы перейти к следующему входу, следующее значение входного выделен (который является нормальное поведение клавиши табуляции).
Затем, если пользователь нажимает '+', чтобы добавить новую строку, он заменяет значение ввода знаком '+'.
Я установил директиву, позволяющую пользователю вводить номер только на входах, но он не работает, когда выделено значение ввода.
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>
Если кто-то знает способ предотвратить пользователю заменить выделенное значение на «+» .... или отключить поведение по умолчанию вкладки ключа.
Спасибо заранее.
Не можете использовать '<входной тип = "число"/>' вместо 'вар transformedInput = InputValue .replace (/ [^ 0-9.] +/g, ''); '? – pomeh
проблема с номером типа одинаков, если значение выделено, чтобы нажать «+», на вход вводится пустое значение – user1260928