2013-05-22 244 views
50

如何检查给定的输入控件是否为空?我知道这个字段上有$pristine属性,它告诉我们如果一个给定的字段最初是空的,但是如果某人填充该字段并再次抽出整个内容会怎么样?检查输入框是否为空

我认为上面的功能是必要的,因为它告诉用户该字段是必需的重要。

任何想法将不胜感激!

回答

83

Quite simple

<input ng-model="somefield"> 
<span ng-show="!somefield.length">Please enter something!</span> 
<span ng-show="somefield.length">Good boy!</span> 

你也可以使用ng-hide="somefield.length"代替ng-show="!somefield.length"如果你读起来更自然。


一个更好的选择可能是真的采取form abilities of 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> 

Updated Plnkr here.

+7

嗨,长度属性只有当字段是有效的。例如,我将字段的“minlength”设置为5,只输入三个字符,那么length属性将不可用。 – vivek

+4

@vivekpoddar [Angular should be forgiving](http://docs.angularjs.org/guide/expression)尽管如此,所以当'length'不可用时,它的计算结果为'undefined',它被解释为false。如果你试图在控制器中进行检查,即使用JavaScript而不是Angular表达式,那么这是另一个需要自己处理宽容的故事。请注意,还有一个'required'属性,它可能正是你想要的:http://docs.angularjs.org/api/ng.directive:input.text – Supr

+0

@vivekpoddar更新为'required'示例。 – Supr

13

即使你不需要来衡量字符串的长度。一个 !操作员可以为您解决所有问题。永远记住:! (空字符串)=真 (某些字符串)= FALSE

所以,你可以写:

<input ng-model="somefield"> 
<span ng-show="!somefield">Sorry, the field is empty!</span> 
<span ng-hide="!somefield">Thanks. Successfully validated!</span> 
+2

它伤害了我的大脑! **相同**检查两种情况? –

+5

是乔纳塔斯似乎令人困惑,因为它是相同的检查,但实际上这些是不同的。第一个是ng-show,第二个是ng-hide。所以他们是相反的! :-)你也可以同时使用ng-show和不同的检查。一个没有(!),另一个没有(!)。 –

+0

我明白了,谢谢你的解释。 –

5

另一种方法是使用正则表达式,如下面的节目,你可以使用空正则表达式模式并获得相同的使用NG-图案

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> 

控制器:@formController:

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

要自动检查复选框,如果输入字段不为空。

<md-content> 
      <md-checkbox ng-checked="myField.length"> Other </md-checkbox> 
      <input ng-model="myField" placeholder="Please Specify" type="text"> 
</md-content>