2015-11-02 104 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?而且,我应该使用最新版本吗? –