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;
});
コメントが承認されるまで時間がかかります。