2015-08-27 6 views
2

У меня возникает интересная проблема при попытке ограничить ввод пользователем числа.Подтвердить тип ввода = «номер» перед отправкой

Мой HTML выглядит так:

<input name="activeDate" type="number" class="form-control" ng-model="account.tag.activeDate"></input> 

... и мой соответствующий угловой код контроллера, как так (это внутри обработчик щелчка):

tag.activeDate = moment.utc().add(tag.activeDate, tag.tagDurationType).toISOString(); 

К сожалению, когда я нажимаю на кнопку который отправляет мою форму и вызывает этот обработчик кликов, я получаю эту ошибку в своей консоли:

[ngModel:numfmt] Expected `2015-08-27T22:09:18.919Z` to be a number 

Lo oks, как и мой вход, проверяется при отправке, когда он преобразуется в дату в моем контроллере. Как ограничить ввод пользователем чисел, не запускаясь?

ответ

2

Использование ng-pattern="/^(\d)+$/" - это простое выражение Regex

var app = angular.module('num', []); 
 

 
app.controller('numCtrl', function($scope, $http){ 
 
    $scope.digits = {}; 
 
}); 
 
angular.bootstrap(document.body, ['num']);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<body ng-controller="numCtrl"> 
 
    <form class="digits" name="digits" ng-submit="getGrades()" novalidate > 
 
     <input type="text" placeholder="digits here plz" name="nums" ng-model="nums" required ng-pattern="/^(\d)+$/" /> 
 
     <p class="alert" ng-show="digits.nums.$error.pattern">Numbers only, please.</p> 
 
     <br> 
 
     <input class="btn" type="submit" value="Do it!" ng-disabled="!digits.$valid" /> 
 
    </form> 
 
    </body>

0

Выберите свой входной элемент, затем выполните следующие действия вы должны искать значение number0Key и number9Key:

myElement.on("keypress", function(e) { 
    if (e.which < number0Key || e.which > number9Key) { 
    e.stopPropagation(); 
    } 
}); 
Смежные вопросы