ページでAngularJS とAngularJS ブートストラップを使用しています。次のような日付ピッカー ディレクティブがあります。
<div class="form-group {{dateStatus.class}}">
<p class="input-group">
<input type="text" id="inpDate" class="form-control"
datepicker-popup="dd-MMMM-yyyy" ng-model="task.date"
is-open="datePickerStatus.isOpen" min-date="minDate"
datepicker-options="dateOptions" ng-required="true"
close-text="Close" placeholder="Due date"
ng-change="checkDateValidity()"
/>
<span class="input-group-btn">
<button type="button" class="btn btn-default"
ng-click="openDatePicker($event)"
>
<i class="glyphicon glyphicon-calendar"></i>
</button>
</span>
</p>
</div>
日付入力を検証するために、私のコントローラーには次の関数があります。
$scope.checkDateValidity = function(){
var date,
isValid,
taskDate;
taskDate = $scope.task.date;
date = new Date(taskDate);
isValid = !isNaN(date);
if(isValid) {
$scope.addButtonState.isOk = true;
$scope.dateStatus.class = '';
}
else{
$scope.addButtonState.isOk = false;
$scope.dateStatus.class = 'has-error';
}
}
挿入された日付が有効かどうかを確認するためにすべてが正常に機能しますが、問題は、日付入力が空白のままになっている (または有効な状態から空白に変更されている) 場合、それも受け入れられるようにしたいのですが、空の入力と無効な日付の両方があるためです。ケース間で宣言する方法がundefined
わかりません。
また、次のように入力テキストを直接読み取ることも考えました。
document.getElementById('inpDate').value
しかし、値が変更されると ng-change が発生し、今は役に立たない以前の値が残っています...
あなたの時間と応答に感謝します。