检查输入框是否为空

viv*_*vek 52 angularjs angular-ui

如何检查给定的输入控件是否为空?我知道$pristine场上有一些属性告诉我,如果一个给定的字段最初是空的,但是如果有人填充该字段并再次拉出整个内容呢?

我认为上述功能是必要的,因为它对于告诉用户需要字段非常重要.

任何想法将不胜感激!

Sup*_*upr 86

很简单:

<input ng-model="somefield">
<span ng-show="!somefield.length">Please enter something!</span>
<span ng-show="somefield.length">Good boy!</span>
Run Code Online (Sandbox Code Playgroud)

您也可以使用ng-hide="somefield.length"而不是ng-show="!somefield.length"更自然地为您读取.


更好的选择可能是真正利用Angular形式能力:

<form name="myform">
  <input name="myfield" ng-model="somefield" ng-minlength="5" required>
  <span ng-show="myform.myfield.$error.required">Please enter something!</span>
  <span ng-show="!myform.myfield.$error.required">Good boy!</span>
</form> 
Run Code Online (Sandbox Code Playgroud)

在这里更新了Plnkr.

  • 嗨,长度属性仅在字段有效时可用.例如,我将字段的`minlength`设置为5并仅输入三个字符,然后length属性将不可用. (7认同)
  • @vivekpoddar [Angular应该原谅](http://docs.angularjs.org/guide/expression)虽然如此,所以当`length`不可用时,它会评估为`undefined`,这被解释为false.如果您正在尝试在控制器中进行检查,即在JavaScript中而不是在Angular表达式中进行检查,那么这是另一个需要自己处理原谅的故事.请注意,还有一个`required`属性可能完全符合您的要求:http://docs.angularjs.org/api/ng.directive:input.text (4认同)

Ima*_*ghi 13

即使你不需要测量弦的长度.一个 !操作员可以为您解决一切问题.永远记住:!(空字符串)= true!(某些字符串)= false

所以你可以写:

<input ng-model="somefield">
<span ng-show="!somefield">Sorry, the field is empty!</span>
<span ng-hide="!somefield">Thanks. Successfully validated!</span>
Run Code Online (Sandbox Code Playgroud)

  • 是的Jonatas看起来很混乱,因为它是相同的检查,但实际上这些是不同的.第一个是ng-show,第二个是ng-hide.所以他们反过来了!:-)你也可以使用ng-show但使用不同的检查.一个没有(!)而另一个没有(!). (5认同)
  • 它伤害了我的大脑!**同样**检查两种情况? (2认同)

Shu*_*gar 5

另一种方法是使用正则表达式,如下所示,您可以使用空的正则表达式模式并使用ng-pattern实现相同

HTML:

 <body ng-app="app" ng-controller="formController">
 <form name="myform">
 <input name="myfield" ng-model="somefield" ng-minlength="5" ng-pattern="mypattern" required>
 <span ng-show="myform.myfield.$error.pattern">Please enter!</span>
 <span ng-show="!myform.myfield.$error.pattern">great!</span>
</form>
Run Code Online (Sandbox Code Playgroud)

控制器:@formController:

var App = angular.module('app', []);
App.controller('formController', function ($scope) {              
  $scope.mypattern = /^\s*$/g;
});
Run Code Online (Sandbox Code Playgroud)