2

stuff[] に少なくとも 1 つの項目が追加されるまで、フォーム全体が有効であってはなりません。ユーザーがテキスト ボックスに値を入力して [追加] をクリックすると、その値が stuff[] に追加されます。値が stuff[] に追加されたこの時点でのみ、送信ボタンを有効にする必要があります。ただし、ユーザーが [追加] をクリックせずにテキスト ボックスに何かを入力すると、stuff[] には何も入力されず、フォームが有効になり、送信ボタンが有効になります。

<form ng-app="myApp" ng-controller="myCtrl" name="myForm" ng-submit="submit()" novalidate>
    <div ng-repeat="things in stuff">
        <table><tr><td>{{things}}</td></tr></table>
    </div>

    <input type="text" name="app" ng-model="input" ng-required="!stuff[0]" />

    <button ng-disabled="!input" ng-click="add()">
        <span> add</span>
    </button>

    <input type="submit" value="Submit" ng-disabled="myForm.$invalid" />

    <script>
        angular.module('myApp', []).controller('myCtrl', function ($scope) {
            $scope.stuff = [];
            $scope.input = null;

            $scope.add = function () {
                var l = $scope.stuff.length;
                $scope.stuff[l] = $scope.input;              
                $scope.input = null; 
            };
            $scope.submit = function () {};            
        });
    </script>
</form>
4

1 に答える 1