asp.net выбор даты календаря не отвечает в Firefox - PullRequest
4 голосов
/ 26 января 2012

У меня есть календарь aspx, который отлично работает в IE, однако в 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 я получаю сообщение об ошибке:

окно.opener.document.forms не является функцией

Когда я ищу window.opener.document.forms в коде C #:

    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 на данный момент не вариант.

Ответы [ 2 ]

3 голосов
/ 27 января 2012

заменить forms(0) на forms[0]

3 голосов
/ 27 января 2012

Возможно, у вас есть ошибки на стороне клиента (javascript), которые происходят только в FF и не позволяют FF даже отправлять ожидаемый вами запрос на сервер.Используйте Firebug, чтобы узнать, не сообщается ли что-либо на консоль ошибок.

...