我有这个输入类型编号。它接受的字符类似于' - ','。',并且除了数字之外还为null。
目前,它也接受以下这些值。
1) '.3343..343.33'
2) '-0.45---.5'
它不应接受上述值,因为它们不是数字。我正在尝试对其进行验证,以便一旦用户在输入' .3343..343.33'后退出该输入字段,它会突出显示背景颜色为红色的输入字段。这样它就会通知用户输入的输入不被接受。
有人可以让我知道如何使用ng-blur实现这一目标。我也看到了一个使用ng-blur和ng-model-options的人。有没有一种简单的方法来实现这种验证。
答案 0 :(得分:1)
试试这个方法,它的工作
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.value = true;
$scope.blurT = function(){
// $scope.value = true;
var calc = Number($scope.inputValue) - Number($scope.inputValue);
if(calc == 0){
$scope.value = true;
console.log(calc);
} else {
$scope.value = false;
}
}
$scope.checkClass = function(){
var value = ($scope.value===true ? 'success':'error');
return value;
}
});
/* Put your css in here */
.error {
border:1px solid #f00;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link href="style.css" rel="stylesheet" />
<script data-semver="1.4.9" src="https://code.angularjs.org/1.4.9/angular.js" data-require="angular.js@1.4.x"></script>
<script src="app.js"></script>
</head>
<body ng-app="plunker" ng-controller="MainCtrl">
<input type="number" ng-class="{'error': value == false}" ng-model="inputValue" ng-blur="blurT()">
{{value}}
</body>
</html>
答案 1 :(得分:0)
Angular自动分配上下文类ng-valid
&amp; ng-invalid
以形成通过/未通过验证的字段。您可以为这些选择器指定样式以获得可视验证信号。还有很多其他课程。
您可以使用HTML pattern='<regular_expression'
属性设置验证。然而,在这种情况下,似乎至少有2个限制:
ng-pattern
,这完全由Angular处理)25.
并停止无效)通过切换到常规type='text'
字段可以解决其中任何一个问题,但是您会丢失特殊的UI编号控件,例如移动设备上的微调器和数字键盘。
var app = angular.module('demo', [])
.controller('main', function ($scope) {$scope.myNumber = 5;});
input.ng-invalid {
box-shadow: 0 0 10px red;
background: pink;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="demo" ng-controller="main">
<form>
Enter a number:
<input type="number" ng-pattern="/^\d*$/" ng-model="myNumber"> = {{myNumber}}
</form>
</div>