Angular.jsを使って、入力フォームの項目をユーザーが増やしたり減らしたりできるようにしてみます。
サンプルコード
数の変動するinput部分はng-repeatで表示するようにして、ng-repeatで使用する配列の数を増やしたり減らしたりすることで、inputの数を変更するようにします。
HTML
<div ng-controller="ctrl"> <dl ng-repeat="input in inputData"> <dt>連絡先{{$index + 1}}</dt> <dd> <input name="input{{$index}}" ng-model="input.value" type="text"> <a href="" ng-click="del($index)">削除</a> </dd> </dl> <div><a href="" ng-click="add()">追加</a></div> </div>
JavaScript
angular.module('app', []).controller('ctrl', function($scope) { $scope.inputData = [ { 'value': '初期値サンプル' } ]; $scope.del = function(index) { $scope.inputData.splice(index, 1); } $scope.add = function() { $scope.inputData.push({'value':''}); } });
サンプルコード2
上記のサンプルだとinputがいくつでも追加できてしまうので、上限数を設定してみます。
追加ボタンにng-hideを設定して、上限数になったらボタンを非表示にします。
HTML
<div ng-controller="ctrl"> <dl ng-repeat="input in inputData"> <dt>連絡先{{$index + 1}}</dt> <dd> <input name="input{{$index}}" ng-model="input.value" type="text"> <a href="" ng-click="del($index)">削除</a> </dd> </dl> <div ng-hide="inputData.length >= max"><a href="" ng-click="add()">追加</a></div> </div>
JavaScript
angular.module('app', []).controller('ctrl', function($scope) { $scope.inputData = [ { 'value': '初期値サンプル' } ]; $scope.del = function(index) { $scope.inputData.splice(index, 1); } $scope.add = function() { $scope.inputData.push({'value':''}); } // input追加の上限数 $scope.max = 5; });
コメントが承認されるまで時間がかかります。