Ваш раскрывающийся список контролирует серверную часть (тег asp:dropdownlist) или клиентскую часть (тег select)?
Если они на стороне сервера, вам нужно ввести идентификатор на стороне клиента для элементов управления. Это может быть причиной отсутствия срабатывания событий.
В ASP.NET элементы управления на стороне сервера имеют другой сгенерированный идентификатор на стороне клиента (поэтому DropDownList с идентификатором «Страна» будет иметь идентификатор на стороне клиента, например ct01_ct050_Country.
В этих случаях вы можете внедрить идентификатор на стороне клиента во время выполнения в свою разметку, используя:
$('#<% Country.ClientID %>').change(function() {
//code here
});
Во время выполнения визуализированный код/разметка будет выглядеть так:
$('#ct01_ct050_Country').change(function() {
//code here
});
Другой вариант избежать идентификаторов клиент/сервер — применить к элементу управления уникальное имя класса CSS и вместо этого выбрать его:
Разметка:
<asp:DropDownList ID="Country" CssClass="countryDD" runat="server" />
и jQuery:
$('select.countryDD').change(function () {
//code here
});
Этот ответ хорошо подходит для прямого ASP.NET. Я не уверен, что это так же актуально для MVC, потому что я не использую эту структуру, но я предполагаю, что она довольно близка по концепции или разметке по сравнению с клиентским кодом.
Надеюсь, это может помочь...
person
KP.
schedule
15.01.2010