2012-05-22 205 views
0

我在HTML中的文本框中有一個像12-08-1989的出生日期。我想驗證用戶必須是18歲的JavaScript。JavaScript中的出生日期驗證?

我已經在JavaScript中使用Date函數,但它似乎接受YYYY-MM-DD格式,但我想在DD-MM-YYYY中進行驗證。

我該如何做到這一點?

+0

如果JavaScript在瀏覽器中被禁用,該怎麼辦? – BalusC

+0

這可能是一種可能性,但我需要它可以請你告訴我我怎麼能在javascript – saurav

+0

我不知道@BalusC,這仍然是一個在Facebook,谷歌等時代與大量jQuery的問題/基於AJAX的用戶界面? – benqus

回答

2
var pattern =/^([0-9]{2})-([0-9]{2})-([0-9]{4})$/; 
if(pattern.test(str_input_date)) 
{ 
    alert("valid date"); 
} 

這應該給你一個開始。 :)

+0

但我怎麼能驗證日期與此代碼 – saurav

0

您可以使用日期類,就這樣

try{ 
    var x=new Date('1/1/2001'); 
    var Cnow=new Date();//current Date 
    if(Cnow.getFullYear()- x.getFullYear()<18){ 
    alert('not old enough'); 
    } 
    else{ 
     //success !!! 
    } 

} 
catch(ejs){alert('invalid')} 
+0

我已經試過你的代碼,但似乎它不工作01-01-2001格式 – saurav

+0

有一個錯字「Cnow。getFullYesr「我寫了yesr而不是yeAr ...並且這種格式工作正常 – Hilmi

+0

謝謝它的工作原理 – saurav

1

你或許應該使用一些驗證框架,像jQuery.validation。這是在你的代碼中處理驗證的更一致的方式。如果這是您的應用中唯一經過驗證的字段,那麼您當然可以使用上面提供的樸素實現。

無論您是需要一些先進的日期驗證規則,你可以使用一個JS日期的框架,像Moment.js(或Date.js,這是非常不合時宜的時刻)。

0

「我已經使用日期函數JavaScript,但現在看來似乎接受YYYY-MM-DD的格式,但我想在DD-MM-YYYY驗證」

你可以通過創建一個Date對象年,月和日(和可選的小時,分​​鍾,秒和毫秒)值分別:

var aDate = new Date(2012, 5, 22); 

所以,如果你使用正則表達式或其他字符串的方法來提取用戶輸入的內容的作品那麼你可以創建一個你喜歡的DD-MM-YYYY(或任何其他)格式的日期。

如果用戶是年滿18歲將是18年加入到他們的出生日期,看看是否能打開或今天的日期之前,我想測試的方式:

aDate.setFullYear(aDate.getFullYear() + 18) 

各種Date對象上可用的方法是listed at MDN