2015-05-05 4 views
1

Я пытаюсь настроить вход, который может принимать только числа, но все же может помещать в него письмо, почему?Невозможно установить только ввод чисел

   <input type="number" 
         pattern="[0-9]" 
         ng-model="slip.risk" 
         class="form-control" 
         placeholder="Risk" 
         ng-change="riskWinCalculations(slip, 'RISK')"> 

Это для приложения Angularjs, поэтому я не знаю, является ли это проблемой или что.

+0

увидеть это: http://stackoverflow.com/questions/16091218/angularjs-allows-only-numbers-to-be-typed-into-a-text-box И Http: //stackoverflow.com/questions/21432677/restrict-input-as-numbers-on-input-fields-using-angularjs?lq=1 –

+0

Вы можете проверить https://github.com/rajesh38/ng-only- номер 1. Он ограничивает ввод только числами и десятичной точкой в ​​текстовом поле при наборе текста. 2. Вы можете ограничить количество цифр, которое должно быть разрешено до и после десятичной точки 3. Оно также обрезает цифры после десятичной точки, если десятичная точка удалена из текстового поля, например. если вы поместили 123.45, а затем удалите десятичную точку, он также удалит конечные цифры после десятичной точки и сделает это 123. –

ответ

2

шаблон не будет препятствовать тому, чтобы символы вводились во входной элемент, он будет отменять проверку.

Чтобы предотвратить ввод числовых символов, вы можете использовать директиву, которая перехватывает введенное значение.

angular.module('components', []).directive('numbersOnly', function() { 
    return { 
     restrict: 'A', 
     require: 'ngModel', 
     link: function (scope, element, attrs, ngModelCtrl) { 
      ngModelCtrl.$parsers.push(function (inputValue) { 
       var transformedInput = inputValue.replace(/\.\.+/g, '.'); 
       ngModelCtrl.$setViewValue(transformedInput); 
       ngModelCtrl.$render(); 

       return inputValue; 
      }); 
     } 
    } 
}); 

Here's a JsFiddle of the working directive

+0

БОЛЬШОЙ МОЙ ДРУГ, СПАСИБО! :) – NietzscheProgrammer

+0

Эй, еще один вопрос, мне нужно, чтобы пользователь мог ввести «.», Как 156.152. так ? – NietzscheProgrammer

+1

Я обновил регулярное выражение, чтобы разрешить десятичные числа, хотя он допускает несколько десятичных знаков в строке – officert

Смежные вопросы