Angular js 在每次 onkeyup 操作后检查输入框是否满足条件?
Angular js to check input box to see if it satisfies a condition after every onkeyup action?
所以我是 angular js 的新手,我明白能够像这个简单的例子一样实时输入和查看输出的直接优势:
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"> </script>
<body>
<div ng-app="">
<p>Name: <input type="text" ng-model="name"></p>
<p>{{name}}</p>
</div>
</body>
</html>
但现在我想更进一步,检查用户是否在任何阶段输入数字 4。如果是,我想向用户输出一条简单消息。
我想这涉及到 ng-if 或 ng-onkeyup,但是关于实现这些的文档很难理解,如果有这方面经验的人能指导我正确的方向,我将不胜感激。
谢谢
您在这里不需要键盘输入。一个简单的 ng-if
就可以解决问题:
<div ng-app="">
<p>Name:
<input type="text" ng-model="name">
</p>
<p>{{name}}</p>
<div ng-if="name==4">You entered four. This is a relevant message to four</div>
</div>
玩得开心..!!!
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"> </script>
<body>
<div ng-app="">
<p>Name: <input type="text" ng-model="name"></p>
<p ng-show="name!='4'">{{name}}</p><span ng-show="name=='4'">You entered 4</span>
</div>
</body>
</html>
以防万一您想要验证表单,这可以使用 ng-messages 很好地完成。它没有涵盖开箱即用的示例,但我仍然认为这就是您要找的东西。
<form name="userForm">
<div class="field">
<label for="name">Enter name:</label>
<input
name="name"
ng-model="name"
ng-minlength="5"
/>
<div ng-messages="userForm.name.$error">
<div ng-message="minlength">
This is to short
</div>
</div>
</div>
<input type="submit" />
</form>
其他答案有效,但它们为您提供了一个非常具体的用例。
广义上,可以使用函数
$scope.$watch
在你的控制器中做一些事情"everytime that variable changes"。
在您的示例中,您可以执行类似 this plunkr
的操作
请记住,使用 $scope.$watch 是一项非常昂贵的操作,因此您应该仅在确实需要对某些内容进行持续检查时才使用它
如果您正在寻找在实施中更具动态性的答案,我建议您使用 ng-change
。
.html
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"> </script>
<body>
<div ng-app="">
<p>Name: <input type="text" ng-model="name" ng-change="isFour()"></p>
<p>{{name}}</p>
</div>
</body>
</html>
.js
//proper controller declaration
$scope.isFour = function() {
//if you want to check that the complete input equals 4
if($scope.name == '4') {
//do something...
}
//if you want to check if the last character was 4
if($scope.name.slice(-1) == '4') {
//do something...
}
//if you want to check if it contains 4 or not
if($scope.name.indexOf("4") > -1) {
//do something...
}
}
注意 ng-change
的函数会在输入框的每次更改时执行,因此这是一个相当昂贵的解决方案。
所以我是 angular js 的新手,我明白能够像这个简单的例子一样实时输入和查看输出的直接优势:
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"> </script>
<body>
<div ng-app="">
<p>Name: <input type="text" ng-model="name"></p>
<p>{{name}}</p>
</div>
</body>
</html>
但现在我想更进一步,检查用户是否在任何阶段输入数字 4。如果是,我想向用户输出一条简单消息。
我想这涉及到 ng-if 或 ng-onkeyup,但是关于实现这些的文档很难理解,如果有这方面经验的人能指导我正确的方向,我将不胜感激。
谢谢
您在这里不需要键盘输入。一个简单的 ng-if
就可以解决问题:
<div ng-app="">
<p>Name:
<input type="text" ng-model="name">
</p>
<p>{{name}}</p>
<div ng-if="name==4">You entered four. This is a relevant message to four</div>
</div>
玩得开心..!!!
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"> </script>
<body>
<div ng-app="">
<p>Name: <input type="text" ng-model="name"></p>
<p ng-show="name!='4'">{{name}}</p><span ng-show="name=='4'">You entered 4</span>
</div>
</body>
</html>
以防万一您想要验证表单,这可以使用 ng-messages 很好地完成。它没有涵盖开箱即用的示例,但我仍然认为这就是您要找的东西。
<form name="userForm">
<div class="field">
<label for="name">Enter name:</label>
<input
name="name"
ng-model="name"
ng-minlength="5"
/>
<div ng-messages="userForm.name.$error">
<div ng-message="minlength">
This is to short
</div>
</div>
</div>
<input type="submit" />
</form>
其他答案有效,但它们为您提供了一个非常具体的用例。
广义上,可以使用函数
$scope.$watch
在你的控制器中做一些事情"everytime that variable changes"。
在您的示例中,您可以执行类似 this plunkr
的操作请记住,使用 $scope.$watch 是一项非常昂贵的操作,因此您应该仅在确实需要对某些内容进行持续检查时才使用它
如果您正在寻找在实施中更具动态性的答案,我建议您使用 ng-change
。
.html
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"> </script>
<body>
<div ng-app="">
<p>Name: <input type="text" ng-model="name" ng-change="isFour()"></p>
<p>{{name}}</p>
</div>
</body>
</html>
.js
//proper controller declaration
$scope.isFour = function() {
//if you want to check that the complete input equals 4
if($scope.name == '4') {
//do something...
}
//if you want to check if the last character was 4
if($scope.name.slice(-1) == '4') {
//do something...
}
//if you want to check if it contains 4 or not
if($scope.name.indexOf("4") > -1) {
//do something...
}
}
注意 ng-change
的函数会在输入框的每次更改时执行,因此这是一个相当昂贵的解决方案。