2017-02-28 10 views
2

Ich habe ein Formular, über das ich nur innerhalb des Datumsbereiches Datum akzeptieren möchte. Aber, welches Datum immer ich hole, es kommt falsch zurück und zeigt falschen Bereich an. Im Folgenden sind die Codes Related-Akzeptieren Datum von Benutzer in bestimmten Bereich

register.html-

<div class="form-group row"> 
     <label for="date" class="col-sm-2 col-form-label class='control-label' ">Date of Birth</label> 
     <div class="col-sm-5"> 
     <input type="date" max="2010-12-31" min="1990-01-01" id="dob" placeholder="Date of birth"> 
     </div> 
    </div> 

controller.js-

var dobInput = document.forms["myform"]["dob"].value; 
    var maxdate = new Date("2010-12-31"); 
    var mindate= new Date("1990-01-01"); 
    if(maxdate>dobInput && dobInput>mindate) 
    { 
     alert("correct range"); 
    } 
    else{ 
     alert("Input out of range"); 
return false; 
    } 

Antwort

1

Der Wert Sie bekommen wird als Zeichenfolge zurückgegeben, aber versuchen Sie dies zu bewerten gegen Date-Typ-Variablen - dies wird nicht funktionieren, da eine String-to-String-Auswertung erfolgt lexicographically.

Sie sollten stattdessen den Wert in ein Datum umwandeln zuerst:

var inputDate = new Date(dobInput); 
if(maxdate>inputDate && inputDate >mindate){ 
    ... 
+0

Vielen Dank ... es hat funktioniert! –

+0

Ich bin froh, dass ich helfen konnte! Es wäre sinnvoll, wenn eine Eingabe vom Typ "date" ein date-Objekt zurückliefert, aber der Typ lediglich dem Browser erlaubt, seinen nativen Rendermechanismus zu ändern. –

+0

Ja. Ich habe es jetzt. –

0

Ihre Eingabe eine Zeichenfolge ist. also zuerst nach Date konvertieren und mit getTime-Methode überprüfen. Der korrekte Code ist wie unten ..

var dobInput = document.forms["myform"]["dob"].value; 
var maxdate = new Date("2010-12-31"); 
var mindate= new Date("1990-01-01"); 
var dateToChk = new Date(dobInput); 
if(maxdate.getTime()>dobInput.getTime() && dobInput.getTime()>mindate.getTime()) 
{ 
    alert("correct range"); 
} 
else{ 
    alert("Input out of range"); 
    return false; 
} 
Verwandte Themen