La Date de validation de la saisie à l'aide de ng-changement, AngularJS
Je l'utilise, AngularJS et Bootstrap, AngularJS dans ma page. J'ai un sélecteur de date directive qui ressemble à ceci:
<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>
Pour valider la date d'entrée, dans mon contrôleur, j'ai la fonction suivante:
$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';
}
}
tout fonctionne bien pour vérifier si la date inscrite est valide, mais le problème est que lorsque la date d'entrée est vide(ou modifié à partir d'un état valide à vide)
Je veux qu'il soit acceptable, mais depuis que les deux vides d'entrée et date non valide sont undefined
je ne sais pas comment déclarer entre les cas.
J'ai aussi pensé à la lecture du texte d'entrée directement comme ceci:
document.getElementById('inpDate').value
mais la ng-le changement est déclenché lorsque la valeur est changé et je suis parti avec la valeur précédente qui est inutile maintenant...
merci pour votre temps et votre réponse.
OriginalL'auteur Reza Shayestehpour | 2014-05-11
Vous devez vous connecter pour publier un commentaire.
Vous pouvez facilement valider
#inpDate
valeur par la liaison du programme de validation de rappel pour les deuxchange
etkeyup
événements, puis, quand votre rappel déclenchée, vous pouvez vérifier la validité de votre entrée.Assurez-vous que votre ont injecté
$timeout
dans votre contrôleur.Oui, Mais j'ai juste corrigé un problème spécifique. La question de l'auteur peut construire une directive et à l'utilisation de cette méthode.
OriginalL'auteur Alireza Ahmadi
Une bien meilleure façon de validation de l'est à l'aide d'une directive pour ajouter une Règle de Validation.
ensuite, vous avez juste besoin d'ajouter
validate-date
à la balise d'entrée et la validation de la marque l'entrée comme valable que si elle est !isNaN (lorsque la date est un nombre OU est vide)OriginalL'auteur Andy59469
Si vous souhaitez valider comme ça, alors vous pouvez utiliser
au début de la
$scope.checkDateValidity
fonctioncomme je l'ai mentionné, ce n'est pas de travail.
D'autre valider
$scope.task.date
comme ça, je ne comprends pas ce qui ne fonctionne pas iciOriginalL'auteur M22an