2017-03-05 3 views
2

Ich habe einen Texteingang, der auf required eingestellt ist. Das Feld ist eine Datumsauswahl. Wenn der Code für die Datumsbereichsauswahl den Text eingibt, erkennt angular die Eingabe nicht als gefüllt. Es enthält immer noch einen Validierungsfehler, der besagt, dass das Feld benötigt wird. Irgendwelche Ideen? Ich habe versucht $setValidity('required',true); Kein Glück dort.AngularJS erforderlicher Eingang, eingestellt mit Code, ungültig

Ich bin mit diesem Datumsbereich Picker: Link

Hier ist der Code ist. Zuerst auf der HTML-Seite, meine Eingabe:

<input class="form-control" type="text" name="daterange" id="daterange" ng-model="daterange" placeholder="Pick A Date"/> 

Dann auf dem JavaScript-Seite I-Setup des Eingang als daterange Picker

$('input[name="daterange"]').daterangepicker({ 
    "autoApply": true, 
    "autoUpdateInput": false 
}); 

$('#daterange').on('apply.daterangepicker', function(ev, picker) { 
    $('#daterange').val(picker.startDate.format('MM/DD/YYYY') + ' - ' + picker.endDate.format('MM/DD/YYYY')); 
}); 

$('#daterange').on('cancel.daterangepicker', function(ev, picker) { 
    $('#daterange').val(''); 
}); 

ich auf der HTML-Seite einen Winkel bin mit all meiner Form zu zeigen, Fehler

<ul> 
    <li ng-repeat="(key, errors) in requestForm.$error track by $index"> <strong>{{ key }}</strong> errors 
     <ul> 
      <li ng-repeat="e in errors">{{ e.$name }} has an error: <strong>{{ key }}</strong>.</li> 
     </ul> 
    </li> 

Wenn ich auf dem Feld manuell eingeben, wird es bestätigen. Aber mit der Datumsauswahl funktioniert das nicht.

+0

verwenden Sie UI-Bootstrap oder plain HTML-Steuerelement? – Aravind

+0

Unvollständige Informationen, teilen Sie Ihren HTML-Code! – Smit

+0

ja, Bootstrap verwenden – DasPete

Antwort

0

Nun habe ich endlich herausgefunden. Das Problem besteht darin, dass der Datumsbereichs-Picker den Wert nicht als Winkel festgelegt hat. Es tat es mit jQuery:

$('#daterange').val(picker.startDate.format('MM/DD/YYYY') + ' - ' + picker.endDate.format('MM/DD/YYYY')); 

Durch den gleichen Anruf zurück von Daterange Wählern aber mit dem Winkel Weg, um den Wert zu setzen:

$scope.daterange = (picker.startDate.format('MM/DD/YYYY') + ' - ' + picker.endDate.format('MM/DD/YYYY')); 

der Prüfer greift es auf. Danke für die Hilfe alle

Verwandte Themen