62

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

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

任何想法将不胜感激!

4

6 回答 6

93

很简单

<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"


更好的选择可能是真正利用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> 

在这里更新了 Plnkr。

于 2013-05-22T12:33:52.790 回答
14

即使您不需要测量字符串的长度。一个 !运营商可以为您解决一切。永远记住: !(empty string) = true !(some string) = false

所以你可以写:

<input ng-model="somefield">
<span ng-show="!somefield">Sorry, the field is empty!</span>
<span ng-hide="!somefield">Thanks. Successfully validated!</span>
于 2014-10-27T18:45:22.997 回答
6

另一种方法是使用正则表达式,如下所示,您可以使用空的正则表达式模式并使用 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>

控制器:@formController:

var App = angular.module('app', []);
App.controller('formController', function ($scope) {              
  $scope.mypattern = /^\s*$/g;
});
于 2015-02-02T09:25:04.970 回答
3

上述答案不适用于Angular 6。所以以下是我解决它的方法。可以说这就是我定义输入框的方式-

<input type="number" id="myTextBox" name="myTextBox"
 [(ngModel)]="response.myTextBox"
            #myTextBox="ngModel">

要检查该字段是否为空,这应该是脚本。

<div *ngIf="!myTextBox.value" style="color:red;">
 Your field is empty
</div>

请注意上述答案与此答案之间的细微差别。我.value在输入名称之后添加了一个附加属性myTextBox。我不知道上面的答案是否适用于 Angular 的上述版本,但对于Angular 6来说,应该这样做。

关于此检查为何有效的更多解释;当输入框中没有值时,默认myTextBox.value值为undefined. 一旦您输入一些文本,您的文本就会成为 的新值myTextBox.value

当您的检查是!myTextBox.value检查该值是否未定义时,它相当于myTextBox.value == undefined.

于 2019-01-10T06:12:04.217 回答
0

如果输入字段不为空,则自动选中复选框。

 <md-content>
            <md-checkbox ng-checked="myField.length"> Other </md-checkbox>
            <input  ng-model="myField" placeholder="Please Specify" type="text">
 </md-content>
于 2017-08-20T12:08:53.043 回答
0

如果您的文本框是必填字段并且有一些正则表达式模式要匹配并且具有 minlength 和 maxlength

测试框代码

<input type="text" name="myfieldname" ng-pattern="/^[ A-Za-z0-9_@./#&+-]*$/" ng-minlength="3" ng-maxlength="50" class="classname" ng-model="model.myfieldmodel">

要添加的 Ng 类

ng-class="{ 'err' :  myform.myfieldname.$invalid || (myform.myfieldname.$touched && !model.myfieldmodel.length) }"
于 2020-05-14T07:29:13.237 回答