我有一个位于内容控件中的链接。此链接调用一个javascript函数,该函数打开一个包含日历的弹出窗口,并使用clientid从文本框控件的服务器传递转换后的id。我需要能够点击日期并关闭弹出窗口并将日期插入我传入函数的id的文本框中,该函数再次位于内容控件内。
这是内容控件中的链接:
<a title="Pick Date from Calendar" onclick="calendarPicker('form1.<%= txtstart.ClientId %>');" href="javascript:void(0);">
这是主页内的javascript:
<script type="text/javascript">
function calendarPicker(strField) {
var strField = window.open('DatePicker.aspx?field=' + strField, 'calendarPopup', 'width=250,height=190,resizable=yes');
}
日历是其自己页面中的日历控件,这是代码隐藏:
Private Sub Calendar1_DayRender(ByVal sender As Object, ByVal e As DayRenderEventArgs) Handles Calendar1.DayRender
Dim link As New System.Web.UI.HtmlControls.HtmlGenericControl
Dim strLink As String
e.Cell.Controls.Clear()
link.TagName = "a"
link.InnerText = e.Day.DayNumberText
strLink = "JavaScript:window.opener.document." & Request.QueryString("Field") & ".value = '" & e.Day.Date & "'; window.close();"
link.Attributes.Add("href", strLink)
If (e.Day.IsSelected) Then
link.Attributes.Add("style", Calendar1.SelectedDayStyle.ToString())
End If
e.Cell.Controls.Add(link)
End Sub
我还应该提到我得到的错误是:
window.opener.document.form1未定义
答案 0 :(得分:0)
不要使用document.form1
。使用document.getElementById(strField)
。您还需要修改对calendarPicker
的通话。 calendarPicker('<%= txtstart.ClientId %>');
不要将javascript放在href
属性中。使用link.Attributes.Add("onclick", strLink)