У меня есть это текстовое поле, и оно будет красным до тех пор, пока пользователь не введет все 5 символов, но затем должен быть зеленым, но я получу зеленый цвет, когда пользователь вводит первый символ, и его даже не нужно быть номером... так как я могу это исправить?
@Html.TextBoxFor(m => m.ZipCode, new { id = "zip", @class = "form-control", @maxlength = "5", @required = "required", ng_model = "zipCode", ng_pattern = @"^[0-9]{5}$" })
и стиль
.ng-invalid {
background-color:#FF8080;
}
.ng-valid {
background-color:#ADEBAD;
}
Ваш диапазон должен иметь запятую.
ng_pattern = @"^[0-9]{5,5}$"
Я бы предложил, что сказал Alpha G33k, и использовать сокращенную цифру, так как это делает ее более читаемой.
ng_pattern = @"^\d{5,}$"
И если вам нужно 5 и всего 5 символов, ваш шаблон должен быть следующим:
ng_pattern = @"^\d{5,5}$"
Я изменил ваш шаблон так, чтобы он читался следующим образом: /^(\w{1,5})$/
\w является коротким для всех буквенно-цифровых символов, а привязки заставляют шаблон соответствовать целым входам.
Мой JS выглядит так:
var App = angular.module('App',[]).controller('Ctrl', Ctrl);
function Ctrl($scope){
$scope.noLetters5LengthRegex = /^\d{1,5}$/;
}
Моя разметка:
<div ng-app="App">
<div ng-controller="Ctrl">
<input type="text" ng-model="something" ng-pattern="noLetters5LengthRegex"
required/>
</div>
</div>
Примечание. Вы можете взять шаблон из функции контроллера и поместить его в представление прямо, если хотите, его одно и то же, только вопрос того, где вы хотите его больше.
Вот вам рабочая демонстрация:
ОБНОВЛЕНО ПО ЗАПРОСУ