JQuery для обнаружения выберите законченную загрузку

0

Как бы вы подошли к этому вопросу: у меня есть 3 варианта (выпадающий), один - это человек, один - государство, один - список городов.

Когда выбрано государство, весь город в этом состоянии будет загружен в список городов

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

$('#State').find('[value="' + user.State + '"]').prop('selected', true);

поскольку состояние предварительно загружено. после этого я

$('#State').trigger('change');

загрузить список городов

Мой вопрос заключается в том, как определить законченную загрузку $ ('# City') из ajax? Может быть, что-то вроде этого:

$('#City').on('load', function(){
   $('#City').find('[value="' + user.City+ '"]').prop('selected', true);
});

но я думаю, что я делаю что-то неправильно...

Есть рекомендации? благодарю!

Здесь полный код:

$('document').ready(function ()
    {
        $('#State').live('change', function ()
        {
            GetCityList($(this).val());
        });

        // when loading, detect query string for user name
        var user = GetUserInfo();

        if (user.Name != '')
        {
            $('#State').find('[value="' + user.State + '"]').prop('selected', true);
        }
        $('#State').trigger('change');

        // this line will not work because City has not finished loading
        $('#City').find('[value="' + user.City + '"]').prop('selected', true);
    });

    function GetCityList(State)
    {
        $.getJSON('/Handler.ashx?State=' + State, function (data)
        {
            var html = '';
            // process data to produce html
            $('#CityList').html(html);
        });
    }
  • 2
    Вы можете использовать ajax callaback .done() чтобы выполнить все, что вы хотите, когда загрузка будет завершена. Кроме того, зачем искать выбранный элемент в городе выберите сразу после его загрузки? Вы не ждете, когда пользователь выберет город?
  • 0
    Функция успеха ajax stackoverflow.com/questions/1185712/…
Показать ещё 4 комментария
Теги:

1 ответ

0
Лучший ответ

хорошо, для тех, у кого такая же проблема со мной, это ответ:

$('document').ready(function ()
{
    $('#State').live('change', function ()
    {
        GetCityList($(this).val());
    });

    // when loading, detect query string for user name
    var user = GetUserInfo();

    if (user.Name != '')
    {
        $('#State').find('[value="' + user.State + '"]').prop('selected', true);
    }
    $('#State').trigger('change');

    // this listens to the custom event that you specified
    $('#CityList').on('loaded123',function()
    {
        $(this).find('[value="' + user.City + '"]').prop('selected', true);            
    });

});

function GetCityList(State)
{
    $.getJSON('/Handler.ashx?State=' + State, function (data)
    {
        var html = '';
        // process data to produce html
        $('#CityList').html(html);

        // trigger a custom event, any name you want
        $('#CityList').trigger('loaded123');
    });
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню