2015-11-02 146 views
-1

任何人都可以告訴我這段代碼有什麼問題嗎?我試圖在允許用戶輸入時將datepicker日期的日期驗證爲mm/dd/yyyy。我使用了建議給我的驗證代碼,並在其中有一些其他代碼,以確保當他們向下鼠標或按下Tab鍵(如果他們根本沒有放入日期)彈出式日曆消失。帶有日期驗證的ASP.net MVC Datepicker

$(function() { 
     $('.datepicker2').datepicker() 
     .on('changeDate', function (ev) { 
      $('.datepicker2').datepicker('hide'); 
     }); 
     ForceDatePickerFormat(); 
    }); 

    function ForceDatePickerFormat(dateValue) { 
     $('.datepicker2').on('keydown', function (e) { 
      var keyCode = e.keyCode || e.which; 
      if (keyCode == 9) { 
       $('.datepicker2').datepicker('hide'); 
      } 
     }); 
     $(".datepicker2").on("blur", function (e) { 
       var selectedDate = dateValue; 
       if(selectedDate == '') 
       return false; 

       var regExp = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/; //Declare Regex 
       var dateArray = selectedDate.match(regExp); // is format OK? 

       if (dateArray == null){ 
       return false; 
       } 

       month = dateArray[1]; 
       day= dateArray[3]; 
       year = dateArray[5];   

       if (month < 1 || month > 12){ 
        return false; 
       }else if (day < 1 || day> 31){ 
        return false; 
       }else if ((month==4 || month==6 || month==9 || month==11) && day ==31){ 
        return false; 
       }else if (month == 2){ 
       var isLeapYear = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); 
       if (day> 29 || (day ==29 && !isLeapYear)){ 
        return false 
       } 
      } 
      return true; 
     }); 
    } 
+0

什麼日期選擇器插件,您使用的?爲什麼你不只是使用客戶端驗證? –

+0

我正在使用bootstrap-datepicker.js。我對asp.net非常陌生......我在模型中使用了DataFormatString =「{0:MM/dd/yyyy},但客戶端想要強制用戶輸入4位數的年份。你的意思是客戶端驗證的意思是什麼?我嘗試了正則表達式,但是找不到一個可以工作的字符串,而且客戶端想要下拉日曆,我歡迎任何幫助! –

+0

如果你綁定的屬性是'DateTime',而你已經啓用了客戶端驗證(包括'jquery.validate.js'和'jquery.validate.unobtrusive.js')並且包含了@@ Html.ValidationMessageFor(m => m.yourDateProperty)',那麼所有這些都是在框外處理的(你不需要任何這個) –

回答

0

按照鏈接:

http://formvalidation.io/examples/jquery-ui-datepicker/

$(function() { 
 

 
    $("#jQueryValidateTest").validate(); 
 

 
    $("[type=date]").datepicker({ 
 
    onClose: function() { 
 
     $(this).valid(); 
 
    } 
 
    }); 
 
});
.valid { 
 
    background: green; 
 
    color: #fff; 
 
} 
 
.error { 
 
    background: red; 
 
    color: #fff; 
 
}
<form id="jQueryValidateTest"> 
 
    <input type="date" required> 
 
</form>​

+0

謝謝!我也會用這個。對不起,這個問題被標記爲「無用」。我真的花了數小時研究。我只是在學習......我認爲這是董事會的目的。 –

+0

這是否有關係,如果我使用引導datepicker或jQuery的ui datepicker?而且,我應該使用最新版本嗎? –