событие изменения триггера в раскрывающемся списке - PullRequest
1 голос
/ 15 января 2010

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 11 июля 2012

В моих каскадных выпадающих меню я использую jquery на или bind

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

});

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

});
0 голосов
/ 16 января 2010

Управляет ли ваш выпадающий список на стороне сервера (тег asp: dropdownlist) или на стороне клиента (выберите тег)?

Если они находятся на стороне сервера, вам нужно ввести идентификатор клиентской стороны для элементов управления. Это может быть причиной отсутствия событий.

В ASP.NET серверные элементы управления имеют другой сгенерированный идентификатор стороны клиента (поэтому DropDownList с идентификатором «Страна» будет иметь идентификатор стороны клиента, например, ct01_ct050_Country.

В этих случаях вы можете ввести идентификатор клиентской стороны во время выполнения вашей разметки, используя:

$('#<% Country.ClientID %>').change(function() {
    //code here
});

Во время выполнения обработанный код / ​​разметка в конечном итоге будет выглядеть так:

$('#ct01_ct050_Country').change(function() {
    //code here
});

Другой вариант, позволяющий избежать идентификаторов клиент / сервер, - применить уникальное имя класса CSS к элементу управления и вместо него выбрать:

Markup:

<asp:DropDownList ID="Country" CssClass="countryDD" runat="server" />

и jQuery:

$('select.countryDD').change(function () {
    //code here
});

Этот ответ хорошо применим к обычному ASP.NET. Я не уверен, имеет ли это отношение к MVC, потому что я не использую этот фреймворк, но я бы предположил, что он довольно близок по концепции или по разметке к клиентскому коду.

Надеюсь, это поможет ...

...