Ошибка «Ожидается объект» при вызове функции JavaScript - PullRequest
0 голосов
/ 23 февраля 2011

Я хочу изменить видимость текстового поля в соответствии со значением, выбранным в раскрывающемся списке.

Я создал такую ​​функцию:

function ShowGiftCardSource() {
        var ddlGiftCardSource = document.getElementById('<%=ddlGiftCardSource.ClientID%>');
        var txtGiftCardSource = document.getElementById('<%=txtGiftCardSource.ClientID%>');

        if (ddlGiftCardSource.value == "Other") {
            txtGiftCardSource.style.visibility = "visible";
            txtGiftCardSource.focus();
        }
    }

На странице CS:

ddlGiftCardSource.Attributes.Add("onChange", "OnSelectedIndexChanged();"); 

и в контроле:

<asp:DropDownList ID="ddlGiftCardSource" runat="server" Width="151px" onChange="ShowGiftCardSource();">

Но я получаю следующую ошибку:

Microsoft JScript runtime error: Object expected

Может кто-нибудь, пожалуйста, помогите мне решить это?

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Измените код на:

ddlGiftCardSource.Attributes.Add("onChange", "ShowGiftCardSource();");

И удалите onchange из тега:

<asp:DropDownList ID="ddlGiftCardOccasion" runat="server" Width="151px">

onchange в теге - это серверная метод для вызова.

Редактировать: если у вас уже есть метод на стороне сервера, вы должны сначала добавить AutoPostBack в выпадающий список, а затем в событии onchange на стороне сервера показать текстовое поле:

<asp:DropDownList ID="ddlGiftCardOccasion" runat="server" Width="151px" OnChange="ShowGiftCardSource" AutoPostBack="True">

И в вашем коде C #:

void ShowGiftCardSource(object sender, EventArgs e) {
  //code.....
  txtGiftCardSource.Visible = true;
}

И, конечно же, избавьтесь от линии ddlGiftCardSource.Attributes.Add.

1 голос
/ 23 февраля 2011

Может быть, это потому, что вы используете метод ShowGiftCardOccasion () в обработчике onChange, но у вас есть имя метода ShowGiftCardSource ()?Тогда javascript просто не может найти метод с правильным именем.

...