2017-02-28 49 views
2

我有一個表單,我只想在日期範圍內接受日期。但是,哪個日期我正在抓取,它返回false並顯示不正確的範圍。 以下是代碼所關乎接受用戶在特定範圍內的日期

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; 
    } 

回答

1

你要返回一個字符串的價值,但是你嘗試根據日期類型變量對此進行評估 - 這不會作爲字符串來進行字符串評估,將會完成lexicographically

您應該值,而不是轉換爲日期第一:

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

非常感謝你...它的工作! –

+0

很高興能幫到你!如果一個類型爲「date」的輸入返回一個日期對象,但是該類型僅允許瀏覽器改變其本地呈現機制,這將是有意義的。 –

+0

是的,我現在明白了。 –

0

你輸入一個字符串。所以先轉換爲日期並使用getTime方法進行檢查。正確的代碼如下..

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; 
} 
相關問題