Динамическая настройка DatePicker maxDate & minDate
У меня есть пользовательский элемент управления ascx с текстовым полем и jquery datepicker в нем. Пользовательский элемент управления имеет два определенных свойства, _futuredate и _pastdate, которые задаются в aspx страницы с помощью элемента управления.
Я хочу использовать эти логические свойства, чтобы установить разум и максимальное значение средства выбора даты, но я испытываю большие трудности и пришел сюда за помощью в качестве крайней меры, потратив два дня на неудачу, чтобы не отсортировать его сам, используя мои ограниченные знания jQuery.
То, что я пытаюсь сделать, это установить значения скрытых полей для дат на основе свойств в процедуре page_init, а затем установить значения mindate и maxdate на основе этих значений скрытых полей. Проблема в том, что я не думаю, что функция jQuery собирает значения (я знаю это, поскольку добавила предупреждение в свою функцию для отображения даты).
Кто-нибудь может помочь мне здесь??
<%@ Control Language="VB" AutoEventWireup="false"
Inherits="HarvestWebSite.HarvestDateUserControl" Explicit="true" Strict="true"
Codebehind="HarvestDateUserControl.ascx.vb" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>
<script type="text/javascript" language="javascript">
$(function() {
try {
document.execCommand("BackgroundImageCache", false, true);
}
catch(exception)
{
// other browsers do nothing
}
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(AttachDatePickers);
});
function AttachDatePickers() {
$( '.datepicker' ).datepicker({
beforeShow: customDate,
showOn: 'both',
buttonImage: clientSideDatePickerImage,
buttonImageOnly: true,
onSelect: function (dateText, inst) { $('#HiddenField1').val(dateText) },
dateFormat: 'dd-M-yy'
});
}
function customDate() {
var defaultMin = new Date();
var defaultMax = new Date();
var Min = defaultMin;
var Max = defaultMax;
// make valid date from hiddenfied value format is MM/dd/yyyy
dateMin = $("#HiddenField2").val();
dateMin = new Date(dateMin);
dateMax = $("#HiddenField1").val();
dateMax = new Date(dateMax);
if (dateMin && dateMax) {
Min = new Date(dateMin.getFullYear(), dateMin.getMonth(), dateMin.getDate());
Max = new Date(dateMax.getFullYear(), dateMax.getMonth(), dateMax.getDate());
}
alert(Max);
return {
minDate: Min,
maxDate: Max
};
}
</script>
<asp:TextBox ID="tbDateBox" runat="server" Width="80px" Enabled="false" CssClass="datepicker"></asp:TextBox>
<noscript>
<asp:ImageButton ID="ibDateBox" runat="server" ImageUrl="~/images/datebox.png"
CssClass="dateboxbutton" Width="16px" Height="16px" />
</noscript>
<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:HiddenField ID="HiddenField2" runat="server" />
Код позади:
Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
If _futuredate = True Then
HiddenField1.Value = DateAdd(DateInterval.WeekOfYear, -2, Today)
Else
HiddenField1.Value = "01/01/2200"
End If
If _pastdate = True Then
HiddenField2.Value = Today
Else
HiddenField2.Value = "01/01/1900"
End If
End Sub