更新:对于仍然可以阅读此内容的任何人,我使用了完全不同的方式。使用AjaxToolkit的Calendar Extender,我能够轻松地动态添加日历并使用Javascript更改不同日期输入的格式,以便日历扩展程序可以读取它。如果您尝试做与我类似的事情,强烈建议您使用AjaxToolkit路线。
我已为Comment类动态创建了Calendar控件(asp:Calendar),按钮和下拉列表。注释类将始终包含文本框,但如果文本框的ID /属性标签是DOB或生日或类似的东西,则会动态创建这些其他控件。
到目前为止,日历,下拉列表和其中一个按钮可以正常工作,但我最后一个按钮有问题。目前,我动态添加一个用于其中一个按钮的脚本,以显示和隐藏包含该日历,下拉列表和相关按钮的div,这些按钮效果惊人。我试图在按下按钮时添加另一个脚本触发器,以从日历中获取所选日期并将其放在文本框中。
现在,我只想尝试访问日历。我使用的代码如下:
function use_calendarDate(){
var calendarDate = '<%=question128_Cal1.SelectedDate%>';
alert(calendarDate);
}
我在另一个与此类似的问题中找到了这个函数,但它没有得到日期,只是放了&lt;%= question128_Cal1.SelectedDate%&gt;作为警告框中的字符串。
这LINK显示了我正在尝试做的事情,但我得到了不同的结果。任何人都可以帮我解决我在这里做错的事吗?
有趣的是,当我使用
时var calendarDate = question128_Cal1.SelectedDate;
OR
var calendarDate = question128_Cal1.value;
我的提醒框告诉我未定义。
提前致谢。
如果需要,我的日历控件创建如下:
在Page_Init
中Dim calendar1 As New Calendar
Call BuildCalendar(calendar1)
calendarDiv.Controls.Add(calendar1)
以下是上面引用的函数。
Private Sub BuildCalendar(ByRef calendar1 As Calendar)
calendar1.ID = "Cal1"
calendar1.SelectedDate = DateTime.Today
calendar1.Attributes.Add("runat", "server")
calendar1.Attributes.Add("OnClientDateChanged", "onDateChange")
calendar1.Attributes.Add("borderwidth", "2px")
calendar1.Attributes.Add("BackColor", "White")
calendar1.Attributes.Add("width", "200px")
calendar1.Attributes.Add("ForeColor", "Black")
calendar1.Attributes.Add("Height", "180px")
calendar1.Attributes.Add("Font-Size", "8pt")
calendar1.Attributes.Add("Font-Names", "Verdana")
calendar1.Attributes.Add("BorderColor", "#999999")
calendar1.Attributes.Add("BorderStyle", "Outset")
calendar1.Attributes.Add("DayNameFormat", "FirstLetter")
calendar1.Attributes.Add("CellPadding", "4")
calendar1.Attributes.Add("ShowNextPrevMonth", "True")
calendar1.Attributes.Add("SelectionMode", "Day")
calendar1.Attributes.Add("ShowTitle", "false")
calendar1.Attributes.Add("OnSelectionChanged", "Calendar_SelectionChanged")
calendar1.TodayDayStyle.ForeColor = Drawing.Color.Black
calendar1.Attributes.Add("todaydaystyle-backcolor", "#cccccc")
calendar1.Attributes.Add("selectorstyle-backcolor", "#cccccc")
calendar1.NextPrevStyle.VerticalAlign = VerticalAlign.Bottom
calendar1.Attributes.Add("dayheaderstyle-font-size", "7pt")
calendar1.Attributes.Add("dayheaderstyle-font-bold", "true")
calendar1.Attributes.Add("dayheaderstyle-backcolor", "#cccccc")
calendar1.Attributes.Add("selecteddaystyle-font-bold", "true")
calendar1.Attributes.Add("selecteddaystyle-forecolor", "White")
calendar1.Attributes.Add("selecteddaystyle-backcolor", "#666666")
calendar1.Attributes.Add("titlestyle-font-bold", "true")
calendar1.TitleStyle.BorderColor = Drawing.Color.Black
calendar1.Attributes.Add("titlestyle-backcolor", "#999999")
calendar1.Attributes.Add("weekenddaystyle-backcolor", "#ffffcc")
calendar1.OtherMonthDayStyle.BackColor = Drawing.Color.Gray
End Sub
答案 0 :(得分:0)
是question128_Cal1还是question128_Calendar1?您的function use_calendarDate()
指的是第一个。错字?
有趣的是,当我使用
时
var calendarDate = question128_Calendar1.SelectedDate;
OR
var calendarDate = question128_Calendar1.value;
我的提醒框告诉我未定义。
那是因为客户端脚本不知道'question128_Calendar1'是什么。这是服务器端ID。
是否有理由不能使用标记来定义日历而是使用相当大的“BuildCalendar”函数?你这样做是为了维护噩梦,IMO。