livvy
09.Май.2025 13:05:12
1
Привет всем! У меня возникла проблема с вызовом JavaScript-функции при изменении выбора в выпадающем списке ASP. Вот мой код:
function handleDropdownChange(selectedValue) {
if (selectedValue === 'Открытый') {
document.getElementById('ответАмериканский').style.display = 'none';
document.getElementById('кнопкаОтвет1').style.visibility = 'hidden';
}
alert(selectedValue);
}
<asp:DropDownList ID='ТипВопросаСписок' CssClass='стильСписка' runat='server' AutoPostBack='True' onchange='handleDropdownChange(this.value)'>
<asp:ListItem Text='Американский' Value='Американский'></asp:ListItem>
<asp:ListItem Text='Открытый' Value='Открытый'></asp:ListItem>
<asp:ListItem Text='Да/Нет' Value='ДаНет'></asp:ListItem>
<asp:ListItem Text='Числовой' Value='Числовой'></asp:ListItem>
</asp:DropDownList>
Я пытаюсь вызвать эту функцию при изменении выбора, но ничего не происходит. Пробовал разные варианты:
onchange=‘javascript:handleDropdownChange()’
onchange=‘handleDropdownChange(this)’
onchange=‘handleDropdownChange(this.value)’
Но ничего не работает. Я новичок в JavaScript, поэтому буду благодарен за любую помощь или объяснения!
Попробуй использовать клиентский ID вместо серверного. Замени ‘ТипВопросаСписок’ на ‘<%= ТипВопросаСписок.ClientID %>’ в атрибуте onchange. Еще вариант - добавь обработчик через JavaScript, а не в разметке. Типа:
document.getElementById(‘<%= ТипВопросаСписок.ClientID %>’).onchange = function() {
handleDropdownChange(this.value);
};
Так должно сработать. Дай знать, если поможет!
дружище, я тоже сталкивался с этой проблемой! дело в том, что asp.net переименовывает элементы при рендеринге страницы. вот что можно сделать:
используй атрибут ClientIDMode=‘Static’ в разметке выпадающего списка. это сохранит оригинальный id.
или добавь обработчик события в коде c#:
ТипВопросаСписок.Attributes.Add(‘onchange’, ‘handleDropdownChange(this.value)’);
попробуй так, должно сработать. удачи в кодинге!
Проблема скорее всего в том, что ASP.NET генерирует другие ID для элементов при рендеринге. Попробуй использовать метод getElementById с ClientID:
var dropdown = document.getElementById(‘<%= ТипВопросаСписок.ClientID %>’);
dropdown.addEventListener(‘change’, function() {
handleDropdownChange(this.value);
});
Это должно решить проблему. Еще совет - используй консоль браузера для отладки, там сразу увидишь ошибки если что.