7
votes

Validations de date et de date de fin de début angularjs

Je suis complètement nouveau à angularjs et essayant de valider 2 scénarios. J'ai 2 boîtes de texte une avec date de début et l'autre avec la date de fin. Je vérifie

  1. Afficher l'erreur de validation sur l'interface utilisateur Si la date de début n'est pas supérieure ou égale à aujourd'hui. Il devrait être aujourd'hui ou n'importe quel jour après aujourd'hui.
  2. Afficher l'erreur de validation sur l'interface utilisateur Si la date de début est supérieure à la date de fin. La date de fin devrait être supérieure à la date de début.

    J'ai essayé le code ci-dessous qui n'a pas fonctionné. Toute suggestion s'il vous plaît.

    code HTML xxx

    js code xxx

    • J'ai un type d'entrée comme texte pour les deux commandes de date.Je utilisez le sélecteur de date Bootstrap.

0 commentaires

4 Réponses :


1
votes

On dirait que vous référencez Curdate code> non défini. Modifiez le conditionnel au si (startdate . Voir Fiddle pour un exemple de travail http://jsfiddle.net/4ec3atzk/1/

$scope.checkErr = function(startDate,endDate){
  $scope.errMessage = '';
  $scope.curDate = new Date();

  if (startDate < endDate){
    $scope.errMessage = 'End Date should be greate than start date';
    return false;
  }

  if (new Date(startDate) < $scope.curDate){
    $scope.errMessage = 'Start date should not be before today.';
    return false;
  }
};


0 commentaires

9
votes

Vous avez la logique inversée sur le premier bit et vous devez construire une nouvelle date à partir de StartDate pour comparer à la date d'aujourd'hui. De plus, vous avez défini curdate dans la portée, $ SPANCAT.CURDATE = nouvelle date () Mais vous l'avez référencé comme Curdate sans la portée Donc, c'était indéfini. Enfin, vous devez lancer indiquer et enddate à une date également. Sinon, vous comparez simplement des chaînes. XXX

Exemple de travail: http: // jsfiddle. net / pecelm14 /


2 commentaires

Le code est peu différent du violon que vous avez posté. Mais cela a beaucoup aidé. S'il vous plaît synchroniser le code que vous avez affiché et violez afin qu'il soit utile pour tout le monde.


Merci! J'ai oublié de jeter les dates dans le premier bloc IF.



0
votes
$scope.datepickerObjectfromdates = {
    todayLabel: 'Today',
    closeLabel: 'Close',
    setLabel: 'Ok',
    setButtonType : 'button-calm',
    todayButtonType : 'button-calm',
    closeButtonType : 'button-calm',
    inputDate: new Date(),
    mondayFirst: true,
    templateType: 'popup',
    showTodayButton: 'true',
    modalHeaderColor: 'bar-calm',
    modalFooterColor: 'bar-calm',
    callback: function (val) {
        var getdate = GetFormattedFromDates(val);
        $scope.date.FromDates = getdate;
        localStorage.date = $scope.FromDates;

    },
    dateFormat: 'MM-dd-yyyy', //Optional
    closeOnSelect: false, //Optional
};
function GetFormattedFromDates(val) {
    if(typeof(val)==='undefined')
    {
        $scope.date.FromDates = '';
    }
    else {

        var todayTime = new Date(val);
        var month = todayTime.getMonth() + 1;
        var day = todayTime.getDate();


        if (month < 10) {
            month = '0' + month;
        }
        if (day < 10) {
            day = '0' + day;
        }


        var year = todayTime.getFullYear();
        return day + "/" + month + "/" + year;
    }

}


$scope.datepickerObjecttodates = {

    todayLabel: 'Today',
    closeLabel: 'Close',
    setLabel: 'Ok',
    setButtonType : 'button-calm',
    todayButtonType : 'button-calm',
    closeButtonType : 'button-calm',
    inputDate: new Date(),
    mondayFirst: true,
    templateType: 'popup',
    allowOldDates: false,

    showTodayButton: 'true',
    modalHeaderColor: 'bar-calm',
    modalFooterColor: 'bar-calm',

    callback: function (val) {
        var getdate = GetFormattedToDates(val);
        $scope.date.ToDates = getdate;
        //$scope.date.ToDates = getdate.clear();


    },

    dateFormat: 'dd-MM-yyyy', //Optional
    closeOnSelect: false, //Optional

};
function GetFormattedToDates(val) {
    if (typeof(val) === 'undefined') {
        $scope.ToDates = '';
    }
    else {
        var todayTime = new Date(val);

        var month = todayTime.getMonth() + 1;
        var day = todayTime.getDate();


        if (day < 10) {
            day = '0' + day;
        }
        if (month < 10) {
            month = '0' + month;
        }
        var year = todayTime.getFullYear();
        return day + "/" + month + "/" + year;
    }

}

0 commentaires

1
votes

Vérifiez ce lien et il est clairement expliqué


0 commentaires