【问题标题】:Ajax Calender Extender issueAjax 日历扩展器问题
【发布时间】:2013-11-29 13:15:36
【问题描述】:

我有一个文本框,我想在其中存储选定的日历日期。为此,我使用了 压延机。并将目标控件属性设置为文本框 id。但是当我单击同一页面的按钮时,我丢失了选定的日期(我的意思是我丢失了文本值)但我想在单击按钮后选择日期.. 我的代码是

<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?
} 

【问题讨论】:

  • 我认为ReadOnly 属性是您的问题。
  • 感谢它运行良好.. 但我不希望用户手动在文本框中插入日期,这就是我将只读属性设置为 true 的原因。还有其他方法可以做到这一点
  • 改用CSS 禁用文本框?至于您关于检查日期的其他查询,您不只是在“CheckForPastDate”函数中处理吗?
  • 我没有给你“CheckForPastDate”功能?你能解释一下吗?
  • 在您发布的标记中,您有一个 OnClientDateSelectionChanged 事件正在处理,我假设有一个 JavaScript 方法正在处理此事件。

标签: ajax javascript asp.net .net ajax ajaxcontroltoolkit


【解决方案1】:

在 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;
}  

更新 2013 年 2 月 12 日

我不确定 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');
}  

【讨论】:

  • 添加此行后java 脚本停止比较日期。在这条线之后,它甚至不会比较过去的日期
  • @AmitKumar 添加了更新,希望这将有助于解决您的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多