我有一个简单的目标。我可以通过创建一个干净的项目来模拟问题。
问题是在动态设置文本框上的日期时,我无法正确设置 asp.net 日历扩展器显示日期(打开时(。
这是一个代码:
.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 加载页面
2-单击文本框,打开日历扩展器。
3 日历扩展器采用当前日期。
4-单击2013按钮,文本框更新为2013日期。
5-点击文本框,打开日历扩展器.....仍然有2014年(当前日期(
场景 2
1 加载页面2-单击2013按钮,文本框更新为2013日期。
3-单击文本框,打开日历扩展器。
4 日历扩展器假定为 2013 年(正确的日期(。
5-单击2015按钮,文本框更新为2015日期。
3-单击文本框,打开日历扩展器.....还有2013年(第一次约会(
场景 3
(与 2 相同,但从按钮 2015 单击开始(
场景 4
1 加载页面
2-单击2013按钮,文本框更新为2013日期(不要单击文本框(。
3-单击2015按钮,文本框更新为2015日期。
4-单击文本框,打开日历扩展器.....假设2015年(最后日期(
注意:如果我动态显示当前设置的日期
alert($find("calendarExtender").get_selectedDate());
,它是正确的。但是显示器根本无法刷新。
这是正确的行为吗?我错过了什么吗?
如何使其假定正确的日期?
好的,我做了更多的测试,发现可视化仅在回发发生时更新。
因为我试图避免回发.....我只是去jQuery日期选择器。