Я взял время, чтобы понять это, но может ли кто-нибудь опубликовать более чистый метод ограничения количества цифр в типе ввода = 'number'. Одна из проблем заключается в том, что ошибки выдаются, если $ scope.variable = null .... ничего не значит в поле ввода., предотвращающий maxLength на тип входного номера
<input type="number" model='modalName' ng-change="monitorLength('modalName',16)">
JS:
$scope.monitorLength = function (model,maxLength) {
if ($scope[model] != null) { // prevent error on empty input field
var len = $scope[model].toString() ; // convert to a string
if (len.length > maxLength) { //evaluate string length
$scope[model] = parseInt(len.substring(0, maxLength));
// convert back to number or warning is thrown on input value not being a number
}
}
}
я тогда нужно расширить на этом учитывать только числа, предотвращая любые нецифровые символы включают в себя ". и «» символы:
var reg = new RegExp(/^\d+$/) ;
$scope.monitorLength = function (modal,maxLength) {
if ($scope[modal] != null) {
var len = $scope[modal].toString() ;
if (len.length > maxLength) {
$scope[modal] = parseInt(len.substring(0, maxLength));
} else if (!reg.test(len)) {
$scope[modal] = parseInt(len.substring(0, len.length-2));
}
}
}
Есть ли способ извлечь нг-режимные, который был ответственен за вызов нг-изменения? поэтому вызов должен быть только: ng-change="monitorLength(10)"
. А потом в функции каким-то образом динамически извлекается вызывающий ng-модаль?
Можете ли вы не просто использовать 'min' и' max' [attributes] (http://www.w3schools.com/tags/att_input_max.asp) для элемента ввода? Существует очень мало браузеров, которые не поддерживают это. – Icepickle
Не для угловых, так как он обертывает элементы и связывает их с параметрами ввода в $ scope, которые не работают или игнорируются. – rolinger