選択入力フィールドを使用してフォームに表示される有効期限が月と年です。ユーザが月と年をクリックすると、ng-changeはcheckDate()関数を起動して検証します。日付が有効であるか無効であるかを返すためにコンソールを使用します。有効期限が無効であることを示すエラーメッセージも表示されます。しかし、フォームが有効でなくても、select要素に無効な状態を与えることはできません。最終的に私のフォームを有効にする日付が間違っていても、クラスはselect要素のng-invalidからng-validに変わります。選択フィールドが無効な場合、無効なクラスをselect要素に適用するにはどうすればよいですか? $scope.formName.inputName.$setValidity("reason", false)
を使用して変更方法角度から選択して無効にする
:
HTML
<div>
<label for="exp_year">Exp Year</label>
<select id="exp_year" class="form-control" ng-model="exp_year" ng-change="checkDate()" required>
<option value="" disabled><span class="pull-left">Year</span></option>
<option value="{{ year }}" ng-repeat="year in years">{{ year }}</option>
</select>
<i class="material-icons pull-right select-icon">arrow_drop_down</i>
</div>
<small class="text-danger">{{errMessage}}</small>
JS
$scope.checkDate = function() {
if (!($scope.exp_month && $scope.exp_month)) return;
if ($scope.exp_month <= currentMonth && $scope.exp_year <= currentYear){
console.log('this form is invalid')
$scope.errMessage = 'Please enter a valid expiration date';
return true
} else {
console.log('this form is valid')
$scope.errMessage = '';
return false
}
}
ありがとうございました!これは完全に機能しました。 ng-invalid-expiredクラスが追加され、日付が正しくない場合はフォームが無効です。 –
私は助けることができるニナモレナ嬉しい:) – tanmay