我正在使用jQuery UI datepicker,jquery验证我的表单......
我想检查您选择的日期是否低于:01-04-1947,如果您选择的日期低于那么,那么它应该显示错误消息! 无法弄清楚如何做到这一点 - 这是我到目前为止所得到的?
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.17.custom.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.datepicker-da.js"></script>
<script type="text/javascript" src="js/jquery.validate.min.js" ></script>
<script>
$(document).ready(function() {
//Hide div w/class
$(".datecontainer").css("display","none");
// Add onclick handler to checkbox w/class bool
$(".bool").click(function(){
// If checked
if ($("#notificationbox_yes").is(":checked"))
{
//show the hidden div
$(".datecontainer").show("fast");
}
else
{
//otherwise, hide it
$(".datecontainer").hide("fast");
}
});
$(function() {
$("#datepicker").datepicker(
{
defaultDate: new Date(35,5,24),
minDate: new Date(47, 3,1),
/*maxDate: new Date(49,12,31),*/
changeMonth: true,
changeYear: true,
monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Aug','Sep','Okt','Nov','Dec'],
dayNamesShort: ['Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør', 'Søn'],
yearRange: '1901:2012',
dateFormat: 'dd-mm-yy'
}
);
//Parse dato til format
var endDate = $.datepicker.parseDate('dd-mm-yy', "01-04-1947");
var date = $.datepicker.parseDate('dd-mm-yy', $('#datepicker').val());
$.datepicker.parseDate('dd-mm-yy', $('#datepicker').val());
if (date <= enddate) {
alert('error');
}
});
$("#mainForm").validate();
});
</script>
答案 0 :(得分:6)
您需要的是mindate
验证方法,如下所示:
$.validator.addMethod('mindate',function(v,el,minDate){
if (this.optional(el)){
return true;
}
var curDate = $(el).datepicker('getDate');
return minDate <= curDate;
}, 'Please specify a recent date');
然后,在验证规则中,指定您的日期选择器输入应使用它:
$("form").validate({
rules: {
datepicker: {
mindate: new Date(47,3,1),
required: true
}
//the rest of your rules
}
//rest of validate options
});
那就是它。在此处查看此操作:http://jsfiddle.net/ryleyb/uFdu7/
您可能希望在验证选项中定义更好的消息。
答案 1 :(得分:1)
根据Anthony的评论中的建议,为什么不通过minDate
项目将最低可能日期指定为可能的最低可选日期?
minDate: new Date(1947, 4, 1)
如果失败,您可以随时使用所选值新建Date
实例,并利用其方法确定输入的有效性(例如getFullYear() >= 1947
,等等)。 Here's a reference帮助做到这一点。