我有一个在IE中工作正常的aspx日历,但是,在FF中,日期选择没有响应。当我在后面的代码中放置一个断点(calActiveCal_SelectionChanged事件)时,应用程序不会破坏该函数。所以函数没有被调用。
HTML代码为:
<td align="center" bgcolor="#ffffff" height="19">
<asp:Calendar ID="calActiveCal" runat="server" BackColor="White" BorderColor="Silver"
BorderStyle="Solid" CellPadding="1" CssClass="Calendar" ShowGridLines="True" OnSelectionChanged="calActiveCal_SelectionChanged">
<TodayDayStyle CssClass="CalToday" />
<SelectorStyle BackColor="#C0C0FF" CssClass="CalHRef" />
<DayStyle CssClass="CalDate" />
<NextPrevStyle CssClass="CalNavMonth" />
<DayHeaderStyle CssClass="CalDayHead" />
<SelectedDayStyle BackColor="Blue" CssClass="CalSelDay" />
<TitleStyle BackColor="#C0C0FF" CssClass="CalMonthHead" />
<WeekendDayStyle CssClass="CalWeekend" />
</asp:Calendar>
</td>
更新 在Firebug中调试时,收到错误消息:
window.opener.document.forms不是函数
当我在后面的C#代码中搜索window.opener.document.forms
时:
string control = "txtDate";
if (this.calActiveCal.SelectedDate > DateTime.Now && !this.ShowFutureDates)
{
this.calActiveCal.SelectedDate = DateTime.Now;
}
if (Request.QueryString.Get("c") != null)
{
string setting = Request.QueryString.Get("c");
if (!setting.Equals(String.Empty))
{
control = setting;
}
}
string strScript = "<script>window.opener.document.forms(0)." + control + ".value = '";
strScript += calActiveCal.SelectedDate.ToString("MM/dd/yyyy");
strScript += "';self.close()";
strScript += "</" + "script>";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Calendar_ChangeDate", strScript);
strScript值是(如果用户选择12/30/2011):
<script>window.opener.document.forms(0).txtFrom.value = '12/30/2011';self.close()</script>
任何想法如何让这个在FF工作?不幸的是,jQuery目前不是一个选项。
答案 0 :(得分:3)
也许你的客户端(javascript)错误只发生在FF中,并且会阻止FF甚至将您期望的请求发布到服务器上。使用Firebug查看是否有任何内容报告给错误控制台。
答案 1 :(得分:3)
将forms(0)
替换为forms[0]