Ajax Calendar Extender问题

时间:2013-11-29 13:15:36

标签: javascript asp.net .net ajax ajaxcontroltoolkit

我有文本框,我想在其中存储所选的日历日期。为此,我使用了日历扩展器。并将目标控件属性设置为文本框ID。但是当我点击相同页面的按钮然后我丢失了选择日期(我的意思是我丢失了textvalue)但是我希望在点击按钮后选择日期。 我的代码是

<td>
     <asp:TextBox ID="txtDate" runat="server" ReadOnly="true"></asp:TextBox>
</td>
 <td>
     <asp:ImageButton ID="imgCalender" runat="server" ImageUrl="~/Images/Calendar.png" ToolTip="Select a Date" />
   <asp:CalendarExtender ID="calShow"  runat="server" PopupButtonID="imgCalender" PopupPosition="BottomLeft" TargetControlID="txtDate" OnClientDateSelectionChanged="CheckForPastDate"></asp:CalendarExtender>
  </td>

我也希望当用户尝试选择大于当前日期+ 20天的日期时,文本框应为空。意味着用户必须再次选择合适的日期。

的Javascript

var selectedDate = new Date(); 
selectedDate = sender._selectedDate; 
var todayDate = new Date(); 

if (selectedDate.getDateOnly() <= todayDate.getDateOnly()) 
{
    alert('Date Cannot be in the past or current date'); 
    sender._textbox.set_Value(null); 
} 
else if(selectedDate.getDateOnly() > todayDate.getDateOnly()) 
{
     // why is this here?
} 

1 个答案:

答案 0 :(得分:0)

在js方法中只需执行类似

的操作
var today = new Date();
var twentyDays = new Date();
twentyDays.setDate(today.getDate()+20);

if (selectedDate.getDateOnly() <= todayDate.getDateOnly()) 
{
    alert('Date Cannot be in the past or current date'); 
    sender._textbox.set_Value(null); 
} 
else if(selectedDate.getDateOnly() > twentyDays.getDateOnly()) 
{
    alert('this is more than 20 days');
    sender._textbox.set_Value(null); 
    return;
}  

更新 02/12/2013

我不确定getDateOnly()方法是什么或者做什么,这似乎导致了我的问题。 下面的脚本是我放在一起测试场景和工作的。只需调整daysModifier变量即可进行测试。

var daysModifier = 23;
var selectedDate = new Date();
selectedDate.setDate(selectedDate.getDate() + daysModifier);

var today = new Date();
var twentyDays = new Date();
twentyDays.setDate(today.getDate()+20);

document.write(today);
document.write("<br />");
document.write(selectedDate);
document.write("<br />");
document.write(twentyDays);


if (selectedDate <= today) 
{
    alert('Date cannot be in the past or current date'); 
} 
else if(selectedDate > twentyDays) 
{
    alert('this is more than 20 days');
}