2010-11-10 43 views
0

我想让Javascript弹出日历控制工作不工作。我得到javascript日历弹出不起作用

错误“Microsoft JScript运行时错误:'window.opener.document.forms(...)。控件'为空或不是对象”。这里是我的情况下,

protected void Change_Date(System.Object sender, System.EventArgs e) 
{ 
    string strScript = "<script>window.opener.document.forms(0)." + control.ClientID + ".value = '"; 
     strScript += calDate.SelectedDate.ToString("MM/dd/yyyy"); 
     strScript += "';self.close()"; 
     strScript += "</" + "script>"; 

     ClientScript.RegisterClientScriptBlock(this.GetType(), "Startup", strScript); 
} 

它显示的日历罚款,但是当我点击日期,我得到的错误,日期被插入文本框。

回答

1

错误的括号:

.document.forms(0) 

应该

.document.forms[0] 
+0

嗨,谢谢你的回复。我也尝试过,但仍然出现错误。现在它说,“Microsoft JScript运行时错误:'window.opener.document.forms.0.control'为空或不是对象”。 – Tony 2010-11-10 20:22:53

+0

然后'control.ClientID'没有被转换成实际的表单元素名称。你需要相当于:'<%= control.ClientID%>' - 希望别人能帮忙。 – scunliffe 2010-11-10 20:35:42

+0

我认为问题与内容页面有关。我正在使用母版页。此示例的父页面是其中一个内容页面。我拿出内容页面并制作一个常规页面,它工作正常。但是,我不确定如何使用Master/Content页面来实现这一点。 – Tony 2010-11-10 22:32:38

0

你真的有你的表格ID “控制” 的元素?这里

你的线是错误的:

string strScript = "<script>window.opener.document.forms(0)." + control.ClientID + ".value = '"; 

正如已经指出它应该是forms[0]而不是forms(0)但随后正在搜索的形式ID为“控制”

元素看起来像你的control.ClientID值返回错误,找出它应该是什么的最简单方法是查看窗体的实际HTML并找到你正在寻找的控件的id,然后用它测试你的方法,然后找出为什么control.ClientID没有返回现有的v ALUE。