вызвать событие изменения в каскадном раскрывающемся списке

Я использую каскадное выпадающее меню из http://stephenwalther.com/blog/archive/2008/09/07/asp-net-mvc-tip-41-creating-cascading-dropdown-lists-with-ajax..aspx.

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

Но событие изменения не вызывает попытки:

            $('#Country').trigger('change');
                       or
            $('#Country').change();

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


person Prasad    schedule 15.01.2010    source источник
comment
Каково было ваше решение?   -  person Nick Binnet    schedule 19.07.2013


Ответы (2)


Ваш раскрывающийся список контролирует серверную часть (тег 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
comment
Я использую ‹%= Html.DropDownList(Country)%› и ‹%= Html.CascadingDropDownList(States, Country)%›. Пробовал варианты, как я сказал в своем вопросе, но не повезло с этими вариантами. И я использую asp.net mvc(C#) для своего приложения. - person Prasad; 16.01.2010
comment
Хорошо, посмотрев на MVC, я вижу, что вам не нужны идентификаторы клиентов, как в традиционном ASP.NET. Другие идеи: вы обернули свой код в $(document.ready(function(){ //code here }); чтобы убедиться, что страница готова? В вашем примере кода также есть $(#Country).change();. ваш синтаксис правильный в вашем реальном коде? ... - person KP.; 20.01.2010

Для своих каскадных раскрывающихся списков я использую jquery на или связать

$('#Country').on('change', function () {
  //Do stuff here

});

$('#Country').bind('change', function () {
  //Do stuff here

});
person Jeff Reddy    schedule 11.07.2012