2013-11-04 131 views
0

我對HTML5有一個小問題。驗證日期輸入 - 最小值和最大值

<input type="date" id="birthday" /> 

我想在JavaScript中檢查此字段。

Min。價值 - 01-01-1990。

我不知道如何解析日期對象並檢查是否正確。

屬性HTML5中的最小值和最大值不起作用。我必須在JavaScript中編寫驗證。

+0

檢查內容:HTTP:// WWW。 the-art-of-web.com/html/html5-form-validation/ – VVL

+0

input type =「text」pattern =「\ d {1,2}/\ d {1,2}/\ d {4}」 – VVL

回答

1

您可以使用JavaScript驗證庫,它使用了HTML5輸入屬性,如最小值和最大值:例如jQuery Validation

<input id="mydate" name="mydate" type="date" min="2000-01-01" max="2010-31-12" required /> 

<script> 
    $("#mydate").validate(); 
</script> 

看一看,因爲這搗鼓工作示例:http://jsfiddle.net/a5Mvt/1/

此外,如果不支持,您可能需要使用像Modernizr這樣的庫來檢查瀏覽器是否支持input[type="date"],並使用jQuery UI或類似的日期選擇器控件。


更新:這裏有一個版本,不使用jQuery或任何其他額外的庫:

<input id="mydate" name="mydate" type="date" min="2000-01-01" max="2010-31-12" required /> 
<span id="mydate_error" style="display:none;"></span> 

<script> 
    var mydate = document.getElementById('mydate'), 
     mydateError = document.getElementById('mydate_error'); 

    mydate.addEventListener('input', function() { 
     if (!mydate.value.match(/\d{4}-\d{1,2}-\d{1,2}/)) { 
      mydateError.innerHTML = 'Please specify a valid date in the form 1990-02-22'; 
      mydateError.style.display = 'inherit'; 
     } else { 
      var value = new Date(mydate.value), 
       min = new Date(mydate.min), 
       max = new Date(mydate.max); 
      if (value < min || value > max) { 
       mydateError.innerHTML = 'Date has to be between ' + min.toDateString() + ' and ' + max.toDateString(); 
       mydateError.style.display = 'inherit'; 
      } else { 
       mydateError.style.display = 'none'; 
      } 
     } 
    }); 
</script> 

更新小提琴:http://jsfiddle.net/a5Mvt/2/

+0

不幸的是我不能使用jQuery。我用JavaScript編寫了所有的東西。 除字段外其他所有工作。 鏈接: http://www.iem.pw.edu.pl/~witkowr1/cwiczenie2/cwiczenie2.html 我不得不做出與使用Ajax數據庫檢查登錄,但後來;) – witek1902

+0

我只是添加了一個沒有jQuery的版本。如果你需要IE的支持,你可能需要爲addEventListener提供一個替代方案。當然,您需要驗證服務器上的輸入。希望這可以幫助。 – Jan

+0

非常感謝;)經過小小的修改後,所有的工作都很好。對不起,我的英語不好,但我希望你明白一切:) – witek1902

相關問題