带有日期验证的ASP.net MVC Datepicker
问题描述:
任何人都可以告诉我这段代码有什么问题吗?我试图在允许用户输入时将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;
});
}
答
按照链接:
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?而且,我应该使用最新版本吗? –
什么日期选择器插件,您使用的?为什么你不只是使用客户端验证? –
我正在使用bootstrap-datepicker.js。我对asp.net非常陌生......我在模型中使用了DataFormatString =“{0:MM/dd/yyyy},但客户端想要强制用户输入4位数的年份。你的意思是客户端验证的意思是什么?我尝试了正则表达式,但是找不到一个可以工作的字符串,而且客户端想要下拉日历,我欢迎任何帮助! –
如果你绑定的属性是'DateTime',而你已经启用了客户端验证(包括'jquery.validate.js'和'jquery.validate.unobtrusive.js')并且包含了@@ Html.ValidationMessageFor(m => m.yourDateProperty)',那么所有这些都是在框外处理的(你不需要任何这个) –