come convalidare la data in formato angolare

Ciao appena mi chiedevo circa il problema se ad esempio ho angolare UI data piker data in formato yyyy-MM-dd .che cosa se gli utenti di inserire la data digitando e entrano in un formato errato per esempio aaaa-gg-mm l’app pensare è data valida e salvarlo come YYYY-MM-dd. proprio come posso convalidare il formato è corretto ?

<div class="panel panel-default">
    <div class="panel-heading">Date </div>
    <div class="panel-body">
        <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    <label class="control-label"><i class="fa fa-calendar"></i><i class="icon-required"></i>Date [YYYY-MM-DD]</label>
                    <div class="input-group">
                        <input type="text" class="form-control" datepicker-popup="yyyy-MM-dd" data-ng-model="model.date" is-open="isDatePickerOpen" close-text="Close" />
                        <span class="input-group-btn">
                            <button type="button" class="btn btn-default" data-ng-click="openDatePicker($event)"><i class="glyphicon glyphicon-calendar"></i></button>
                        </span>
                    </div>
                    <div class="validation-warning" data-ng-show="displayModel.showDateValidator"><i class="icon-alert"></i>Required</div>
                </div>
            </div>
        </div>
    </div>
</div>

validatore

var formValidator = function ($scope) {
    var isDateValid = function () {
        return $scope.model != null && $scope.model.date != null && $scope.model.date !== '';
    };

    return {
        valid: function () {
            var isValid = true;
            if (!isDateValid()) {
                isValid = false;
            }

            return isValid;
        },
        addWatches: function () {
            $scope.$watch('model.date', function () {
                $scope.displayModel.showDateValidator = !isDateValid();
            });

        }
    };

};//ActivitiesFormValidator
InformationsquelleAutor | 2015-05-13

 

3 Replies
  1. 2

    Momentjs la raccolta potrebbe essere utile per voi.

    moment("2010 13",           "YYYY MM").isValid();     //false (not a real month)
    moment("2010 11 31",        "YYYY MM DD").isValid();  //false (not a real day)
    moment("2010 2 29",         "YYYY MM DD").isValid();  //false (not a leap year)
    moment("2010 notamonth 29", "YYYY MMM DD").isValid(); //false (not a real month name)
  2. 1

    Madrelingua statico Date.parse() metodo o dare un’occhiata a momentjs biblioteca, che ha un grande data astrazione su di esso.

    Inoltre è possibile utilizzare le espressioni regolari per controllare la data, ad esempio,

    /\d{4}-\d{2}-\d{2}/.test($scope.model.date)

    ma dovrebbe venire in coppia con Data.analizzare, corso 9999-99-99 passerà attraverso semplici validator.

    Comunque, ecco qui alcuni regexp per data di convalida da guardare.

  3. 0

    Aggiornare il tuo FormValidator funzione, l’uso di JavaScript nativo

    var formValidator = function ($scope) {
        var isDateValid = function () {
            //return $scope.model != null && $scope.model.date != null && $scope.model.date !== '';
            var dateTime = $scope.model.date;
            if (dateTime === null) return false;
            var day = dateTime.getDate();
            var month = dateTime.getMonth() + 1;
            var year = dateTime.getFullYear();
            var composedDate = new Date(year, month, day);
            return composedDate.getDate() === day &&
                     composedDate.getMonth() === month &&
                     composedDate.getFullYear() === year;
    
        };
    
        return {
            valid: function () {
                var isValid = true;
                if (!isDateValid()) {
                    isValid = false;
                }
    
                return isValid;
            },
            addWatches: function () {
                $scope.$watch('model.date', function () {
                    $scope.displayModel.showDateValidator = !isDateValid();
                });
    
            }
        };
    
    };//ActivitiesFormValidator

Lascia un commento