我有一个简单的目标。我可以通过创建一个干净的项目来模拟这个问题。
问题是我在动态设置文本框上的日期时无法正确设置asp.net calendarExtender显示日期(打开时)。
这是一段代码:
HTML:
<asp:Button
ID="Button1"
runat="server"
Text="2013"
OnClientClick="SetDate(0);return false;" />
<asp:Button
ID="Button2"
runat="server"
Text="2015"
OnClientClick="SetDate(1);return false;" />
<br />
<asp:TextBox
runat="server"
ID="tbDate"></asp:TextBox>
<asp:CalendarExtender
ID="clDate"
runat="server"
Enabled="True"
BehaviorID="calendarExtender"
TargetControlID="tbDate">
</asp:CalendarExtender>
JavaScript的:
var Data = (function () {
var _items = [{ ID: 1, Date: "19/12/2013" },
{ ID: 2, Date: "19/12/2015" }];
function _GetAll() {
return _items;
}
function _GetByID(itemID) {
var o = $.grep(_items, function (el, i) {
return el.ID === itemID;
});
return o[0];
}
return {
GetByID: _GetByID,
GetAll: _GetAll
}
})();
function SetDate(itemID) {
var item = Data.GetByID(itemID);
var stringDate = item.Date;
var objectDate = Date.parseLocale(item.Date, "dd/MM/yyyy");
$("#tbDate").val(stringDate);
$find("calendarExtender").set_selectedDate(objectDate);
}
这应该尽可能简单,但控件接缝有自己的行为。 根据我的结论,显示日期(打开时)始终假定最后选择的日期。无论你做什么。
有些风景如画:
情景1
1次加载页面
双击文本框,打开日历扩展程序。
3-calendar extender假设当前日期。
点击2013按钮,文本框更新为2013日期。
文本框上的5-cick,打开日历扩展器.....仍然有2014年(当前日期)
情景2
1次加载页面 双击2013按钮,文本框更新为2013日期。
点击文本框,打开日历扩展程序。
4日历扩展程序假定为2013(正确日期)。
点击2015按钮,文本框更新为2015日期。
点击文本框,打开日历扩展器.....仍然有2013年(第一次约会)
情景3
(与2相同,但从按钮2015开始点击)
情景4
1次加载页面
双击2013按钮,文本框更新为2013日期(请勿单击文本框)。
点击2015按钮,文本框更新为2015日期。
点击文本框,打开日历扩展器.....假设2015(上次日期)
注意:如果我用
动态显示当前设定日期alert($find("calendarExtender").get_selectedDate());
,这是正确的。但显示器根本不会刷新。
这是正确的行为吗?我错过了什么吗?
如何让它假设正确的日期?
答案 0 :(得分:0)
好的,我做了一些测试,发现只有在回发后才会更新可视化。
因为我试图避免回帖.....我只是去找jquery datepicker。