jquery month picker:设置初始最小/最大范围与“from”<“to”function冲突

我使用jQuery月选择器(没有日期),格式如:201110。

我想设置一个最小日期(参见代码),所以首先在django forms.py中定义它为date-min,然后将此日期解析为html。 首先是最小/最大范围。 (虽然现在不行)。

然后为了实现“to”日期总是晚于“from”日期,我还需要使用min / max函数,然后它会覆盖我从SQL设置的前一个月范围。

目前的情况是我可以实现“到”日期>“从”日期。 但是最小日期(来自MYSQL)现在不起作用。

我怎么能解决这个冲突,请告诉我。 提前致谢

感谢您的回复。

 $(function() { $( "#from, #to" ).datepicker({ changeMonth: true, changeYear: true, showButtonPanel: true, dateFormat: 'yy MM', minDate: $(this).date-min, ///it is here doesn't work, the minDate is coming from Django onClose: function(dateText, inst) { var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val(); var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val(); $(this).datepicker('setDate', new Date(year, month, 1)); }, beforeShow : function(input, inst) { if ((datestr = $(this).val()).length > 0) { year = datestr.substring(datestr.length-4, datestr.length); month = jQuery.inArray(datestr.substring(0, datestr.length-5), $(this).datepicker('option', 'monthNames')); $(this).datepicker('option', 'defaultDate', new Date(year, month, 1)); $(this).datepicker('setDate', new Date(year, month, 1)); } var other = this.id == "from" ? "#to" : "#from"; var option = this.id == "from" ? "maxDate" : "minDate"; if ((selectedDate = $(other).val()).length > 0) { year = selectedDate.substring(selectedDate.length-4, selectedDate.length); month = jQuery.inArray(selectedDate.substring(0, selectedDate.length-5), $(this).datepicker('option', 'monthNames')); $(this).datepicker( "option", option, new Date(year, month, 1)); } } }); $("#btnShow").click(function(){ if ($("#from").val().length == 0 || $("#to").val().length == 0){ alert('All fields are required'); } else{ alert('Selected Month Range :'+ $("#from").val() + ' to ' + $("#to").val()); } }) });  

我如何在dJango中定义我的约会日期:

在models.py中

 class XXX(models.Model): start_date=models.DateField(auto_now_add=True) end_date=models.DateField(auto_now_add=True) 

在forms.py中

 class Meta: model = XXX fields = ('start_date','end_date') date_min=XXX.objects.all().aggregate(Min('date'))  widgets = { 'start_date': forms.DateInput(attrs={'class':'datepicker', 'date-min':date_min, }), } 

首先,你应该这样做

 $(this).attr('date-min') 

代替

 $(this).date-min 

获取date-min属性。

你的下一个问题是你在dom ready回调中调用$(this) ,其中这是指文档对象而不是#from#to元素。

您正在寻找的解决方案是

 $(function() { $( "#from, #to" ).each(function() { $(this).datepicker({ .... minDate: $(this).attr('date-min'), .... }) }) ) 

而且我不确定这一行:

 date_min=XXX.objects.all().aggregate(Min('date'))  

没有相关模型中描述的forms的字段是可以的,但是你不想在这里获得像Min('start-date')Min('end-date')东西? 你的forms是否定义为类似的东西

 class XXXForm(forms.ModelForm): class Meta: .... 

不只是

 class Meta: ....