AngularJS 表单输入名称验证在 ngrepeat 中不起作用
AngularJS form input name validation not working in ngrepeat
name="number-{{$index+1}}"
同时在 ng-repeat
工作 myform.number-{{$index+1}}.$invalid
不适用于表格
演示:http://plnkr.co/edit/Z3EmpHu8w2iZcZko9dJv?p=preview
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.choices = [{no: '1234567890'}, {no: '0987654321'}];
$scope.numberAdd = function() {
$scope.choices.push({'no':''});
};
$scope.numberRemove = function(item) {
$scope.choices.splice(item, 1);
};
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" />
<script src="https://code.angularjs.org/1.4.9/angular.js" data-semver="1.4.9"></script>
<div class="container" ng-app="plunker" ng-controller="MainCtrl">
<form name="myform" class="form-inline">
<br>
<div class="form-group" ng-repeat="choice in choices">
<div class="input-group">
<input type="text" class="form-control" ng-model="choice.no" name="number-{{$index+1}}" placeholder="Mobile number {{$index+1}}" required>
<div class="input-group-addon" ng-if="!$last" ng-click="numberRemove(choice)"><span class="glyphicon glyphicon-minus"></span>
</div>
<div class="input-group-addon" ng-if="$last" ng-click="numberAdd()"><span class="glyphicon glyphicon-plus"></span>
</div>
</div>
<span class="text-danger" ng-show="myform.number-{{$index+1}}.$invalid">Field required</span>
</div>
</form>
<br>
<pre>{{choices | json}}</pre>
</div>
ng-show
接受 expression
。你可以这样写:
<span class="text-danger" ng-show="myform['number-' + ($index + 1)].$invalid">Field required</span>
更新了演示 here。
我将 "track by $index" 添加到您的 ng-repeat 以使元素独一无二,并使用 ng-repeat 将表单元素移动到 div with ng-repeat。无需更改控制器。
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" />
<script src="https://code.angularjs.org/1.4.9/angular.js" data-semver="1.4.9"></script>
<div class="container" ng-app="plunker" ng-controller="MainCtrl">
<div class="form-inline" ng-repeat="choice in choices track by $index" ng-form="myform">
<div class="form-group">
<div class="input-group">
<input type="text" class="form-control" ng-model="choice.no" name="number" placeholder="Mobile number {{$index+1}}" required>
<div class="input-group-addon" ng-if="!$last" ng-click="numberRemove(choice)"><span class="glyphicon glyphicon-minus"></span>
</div>
<div class="input-group-addon" ng-if="$last" ng-click="numberAdd()"><span class="glyphicon glyphicon-plus"></span>
</div>
</div>
<span class="text-danger" ng-show="myform.number.$invalid">Field required</span>
</div>
</div>
<br>
<pre>{{choices | json}}</pre>
</div>
name="number-{{$index+1}}"
同时在 ng-repeat
工作 myform.number-{{$index+1}}.$invalid
不适用于表格
演示:http://plnkr.co/edit/Z3EmpHu8w2iZcZko9dJv?p=preview
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.choices = [{no: '1234567890'}, {no: '0987654321'}];
$scope.numberAdd = function() {
$scope.choices.push({'no':''});
};
$scope.numberRemove = function(item) {
$scope.choices.splice(item, 1);
};
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" />
<script src="https://code.angularjs.org/1.4.9/angular.js" data-semver="1.4.9"></script>
<div class="container" ng-app="plunker" ng-controller="MainCtrl">
<form name="myform" class="form-inline">
<br>
<div class="form-group" ng-repeat="choice in choices">
<div class="input-group">
<input type="text" class="form-control" ng-model="choice.no" name="number-{{$index+1}}" placeholder="Mobile number {{$index+1}}" required>
<div class="input-group-addon" ng-if="!$last" ng-click="numberRemove(choice)"><span class="glyphicon glyphicon-minus"></span>
</div>
<div class="input-group-addon" ng-if="$last" ng-click="numberAdd()"><span class="glyphicon glyphicon-plus"></span>
</div>
</div>
<span class="text-danger" ng-show="myform.number-{{$index+1}}.$invalid">Field required</span>
</div>
</form>
<br>
<pre>{{choices | json}}</pre>
</div>
ng-show
接受 expression
。你可以这样写:
<span class="text-danger" ng-show="myform['number-' + ($index + 1)].$invalid">Field required</span>
更新了演示 here。
我将 "track by $index" 添加到您的 ng-repeat 以使元素独一无二,并使用 ng-repeat 将表单元素移动到 div with ng-repeat。无需更改控制器。
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" />
<script src="https://code.angularjs.org/1.4.9/angular.js" data-semver="1.4.9"></script>
<div class="container" ng-app="plunker" ng-controller="MainCtrl">
<div class="form-inline" ng-repeat="choice in choices track by $index" ng-form="myform">
<div class="form-group">
<div class="input-group">
<input type="text" class="form-control" ng-model="choice.no" name="number" placeholder="Mobile number {{$index+1}}" required>
<div class="input-group-addon" ng-if="!$last" ng-click="numberRemove(choice)"><span class="glyphicon glyphicon-minus"></span>
</div>
<div class="input-group-addon" ng-if="$last" ng-click="numberAdd()"><span class="glyphicon glyphicon-plus"></span>
</div>
</div>
<span class="text-danger" ng-show="myform.number.$invalid">Field required</span>
</div>
</div>
<br>
<pre>{{choices | json}}</pre>
</div>