Validation startdate验证后的文本输入日期选择器enddate
我有两个输入框,开始日期和结束日期。我试图强制用户在第二个输入框中选择第一个输入框中日期之后的日期。这将在ajax save上进行验证 包括isvalid在内的所有功能在ie中都非常有效,但在FF或opera中都不起作用。 在FF和opera中,无论开始日期之前或之后的日期是什么,它都会一直显示isValid:“必须在开始日期之后”消息,而不会进行验证 有没有人知道为什么,或者有一个解决方案使用日期选择器,这样它可以修改第二个日期选择器上的minDate 以下是ajax模式的按钮:Validation startdate验证后的文本输入日期选择器enddate,validation,jquery,jquery-plugins,jquery-ui-datepicker,Validation,Jquery,Jquery Plugins,Jquery Ui Datepicker,我有两个输入框,开始日期和结束日期。我试图强制用户在第二个输入框中选择第一个输入框中日期之后的日期。这将在ajax save上进行验证 包括isvalid在内的所有功能在ie中都非常有效,但在FF或opera中都不起作用。 在FF和opera中,无论开始日期之前或之后的日期是什么,它都会一直显示isValid:“必须在开始日期之后”消息,而不会进行验证 有没有人知道为什么,或者有一个解决方案使用日期选择器,这样它可以修改第二个日期选择器上的minDate 以下是ajax模式的按钮: button
buttons: {
'Save': function() {
if($("#new_request_form").valid()){
// do stuff if form validates
submitFormWithAjax($("#new_request_form"));
$(this).dialog('close');
} else {
// do stuff if form does not validate
}
},
'Cancel': function() {$(this).dialog('close');}
},
以下是日期检查,以确保enddate在startdate之后:
jQuery.validator.addMethod("isValid", function (value, element) {
var startDate = $('#startdate').val();
var finDate = $('#enddate').val();
return Date.parse(startDate) < Date.parse(finDate);
}, "* End date must be after start date");
$("#new_request_form").validate({
rules: {
days: "required",
hours: {
required: true,
number: true,
digits: false
},
startdate: "required",
enddate: {
required: true,
isValid: true
}
},
messages:{
days: "Required",
hours: {
required: "Required",
number: "Numbers Only"
},
startdate: "Required",
enddate: {
required: "Required",
isValid: "Must be after start date"
}
}
});
var $ac_start_date = '<?php echo $ac_end_date ?>',
$ac_start_date_flip = '<?php echo $ac_end_date_flip ?>',
$ac_start_parsed = Date.parse($ac_start_date),
_today = new Date().getTime();
// For Opera and older winXP IE n such
if (isNaN($ac_start_parsed)) {
$ac_start_parsed = Date.parse($ac_start_date_flip);
}
var _aDayinMS = 1000 * 60 * 60 * 24;
// Calculate the difference in milliseconds
var difference_ms = Math.abs($ac_start_parsed - _today);
// Convert back to days and return
var DAY_DIFFERENCE = Math.round(difference_ms/_aDayinMS);
// do initialization here
$("#startdate").datepicker({
dateFormat: 'dd-mm-yy',
changeMonth: true,
changeYear: true,
yearRange: '0:+100',
minDate: '+1d',
maxDate: '+' + (DAY_DIFFERENCE + 1) + 'd'
});
// do initialization here
$("#enddate").datepicker({
dateFormat: 'dd-mm-yy',
changeMonth: true,
changeYear: true,
yearRange: '0:+100',
minDate: '+1d',
maxDate: '+' + (DAY_DIFFERENCE + 1) + 'd'
});
}, 'html');
return false;
});
}
function submitFormWithAjax(form) {
form = $(form);
$.ajax({
url: form.attr('action'),
data: form.serialize(),
type: (form.attr('method')),
dataType: 'script',
success: function(data){
}
});
return false;
}
jQuery.validator.addMethod(“isValid”),函数(值,元素){
var startDate=$('#startDate').val();
var finDate=$('#enddate').val();
返回日期.parse(startDate)
为什么要重新发明车轮?为什么不使用一个带有范围选项的插件,比如:或brilliant solution,为什么我没有想到这一点。@balexandre不错的一个!!!加上它作为答案,其他人就会从中受益。。