Как вызвать функцию JavaScript на выбранных элементах selectedIndexChange - PullRequest
0 голосов
/ 04 августа 2009

Я использую ASP.NET с C #

У меня есть элемент HTMLSelect, и я пытаюсь вызвать функцию javascript при изменении индекса выбора.

riskFrequencyDropDown динамически создается в коде на C # позади:

 riskFrequencyDropDown.Attributes.Add("onchange", "updateRiskFrequencyOfPointOnMap(" + riskFrequencyDropDown.ID.Substring(8) + "," + riskFrequencyDropDown.SelectedValue +");");

но он не вызывает функцию javascript на моей странице. Когда я удаляю параметры, он работает нормально, но мне нужно передать эти параметры, чтобы обеспечить надлежащую функциональность.

Любое понимание этой проблемы будет высоко ценится

Ответы [ 4 ]

4 голосов
/ 04 августа 2009

Ваши параметры числовые или буквенно-цифровые? Если они содержат буквы, вам нужно процитировать их в javascript. Обратите внимание на добавление одинарных кавычек ниже.

riskFrequencyDropDown.Attributes.Add("onchange",
             "updateRiskFrequencyOfPointOnMap('"
                  + riskFrequencyDropDown.ID.Substring(8)
                  + "','"
                  + riskFrequencyDropDown.SelectedValue +"');");
0 голосов
/ 11 ноября 2009

Я бы предложил использовать ответ Ланса.Это связано с тем, что отправка выбранного значения во время вызова attribute.add будет означать, что onchange будет использовать любое выбранное значение.

Допустим, ddl содержит ("One", "Two", "Three") и «Один» выбран по умолчанию.Каждый раз, когда вызывается ddl onchange, параметр выбранного значения updateRiskFrequencyOfPointOnMap будет содержать «One» (даже если выбрано «Three»).

То есть, если вы намерены выполнить действие с выбранным значением.

0 голосов
/ 04 августа 2009

Я предложу строку. Формат вместе с одинарными кавычками

riskFrequencyDropDown.Attributes.Add("onchange",string.Format("updateRiskFrequencyOfPointOnMap('{0}','{1}');",riskFrequencyDropDown.ID.Substring(8),riskFrequencyDropDown.SelectedValue )); 
0 голосов
/ 04 августа 2009

Ответ tvanfosson отвечает на ваш вопрос. Еще один вариант (который может помешать вам снова страдать от этого):

Автор более простой JavaScript в вашем C #:

riskFrequencyDropDown.Attributes.Add("onchange",
             "updateRiskFrequencyOfPointOnMap(this);");

И затем, внутри самой функции javascript (которая вызывается в onchange), получите нужные вам значения из объекта dropDown :

function updateRiskFrequencyOfPointOnMap(dropDown) {
    var riskFrequencyId = dropDown.ID.Substring(8);
    var riskFrequencyValue = dropDown.SelectedValue;
    // etc
}

Менее очевидное преимущество для этого дизайна: если вы когда-нибудь измените способ использования выпадающего объекта (возможно, Substring (6) или Substring (8)), вам не нужно менять свой C # - вы имеете изменить свой JavaScript (и только в одном месте).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...