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,但是关于实现这些的文档很难理解,如果在这个领域有经验的人可以指导我正确的方向,我将非常感激。
谢谢
这里不需要keyup。一个简单的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
在你的控制器中做一些"每次变量改变"的事情。
在你的例子中,你可以这样做: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
的函数在每次修改输入框时执行,所以这是一个相当昂贵的解决方案。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何检测是否有溢出
- jQuery中是否内置了任何字符串格式化函数
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 测试索引值是否等于某个数字的倍数
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- jQuery是否满足完全匹配类的条件
- 使用jquery检查是否选择了radio不满足条件
- JavaScript 检查函数参数是否满足条件
- 是否可以使函数在满足条件之前不返回
- 如何确定Dynamics CRM 2013中的实体形式是否满足所有业务规则?
- Angular js会在每次onkeyup动作之后检查输入框,看它是否满足一个条件
- jQuery是否有一种方法来检查数组的所有值,看它们是否满足某些条件?
- 如何检查任何元素是否满足条件
- Javascript如何检查一个条件是否已经满足,并不再应用它