2014-01-08 12 views
13

Ich habe eine Ansicht, die erfordert, dass der Benutzer ihr Geburtsdatum in ein Textfeld eingibt.Wie bekomme ich maskiertes Datum im Modell von Eingabe in eckigen mit UI-Maske?

Ich benutze die Maskierungsanweisung von UI-Utils.

Meine Ansicht hat dieses Eingabeelement darin:

<input ui-mask="99/99/9999" placeholder="MM/DD/YYYY" type="text" name="uBirthdate" ng-model="user.birthdate" required/> 

und in meinem Controller habe ich den Umfang aufgebaut wie

myApp.controller('HomeCtrl', function ($scope, myService){ 

    $scope.user = registerService.getCurrentUser(); 

    $scope.submit = function() { 
     //do something with $scope.user.birthdate 
    }; 

    } 
}); 

Mein Problem ist, dass die birth Eigenschaft enthält in meinem Controller, der Wert von der Eingabe OHNE die Maskierungszeichen, so eine Eingabe von

11/20/1980 in der Ansicht wird 11201980 als eine Eigenschaft auf dem $ Scope

Wie kann ich sicherstellen, dass ich ein gültiges Maskedatum habe, um mit meinem Controller zu arbeiten? Just FYI, dieses Datum wird als JSON in einer POST-Anfrage an meinen Server gesendet.

Antwort

-2

als String:

var string = '11201980'; 
var month = string.substring(0,2); 
var day = string.substring(2,4); 
var year = string.substring(4,8); 
var birthday = month + '/' + day + '/' + year; 

dann, als ein Datum:

var birthdate = new Date(birthday); 
36

Upgrade auf die neuesten Winkel-ui und die folgende Syntax

ui-mask="99/99/9999" model-view-value="true" 

Die Profis- view-value behält die Maske auf Ihrem Modellobjekt.

+0

Gibt es eine Möglichkeit für sie 12/19/9999 so zu tun, dass Sie nicht ungültig Daten eingeben können. – PixMach

+0

Ich würde eine clientseitige Validierungsbibliothek verwenden, um gültige Daten zu überprüfen, anstatt die Maske zu diesem Zweck zu verwenden. – map7

+2

[momentjs] (http://momentjs.com) kann hinzugefügt werden, um die Client-seitige Validierung als @ map7 zu überprüfen. –