Выбор значения в динамически заполненном раскрывающемся списке после заполнения списка - PullRequest
0 голосов
/ 30 декабря 2011

Итак, у меня проблема с тем, что мой код пытается выбрать значение в раскрывающемся списке до его заполнения.По сути, он вызывает функцию javascript, которая делает запись AJAX для получения выпадающих значений из php.Затем он должен выбрать значение в списке, однако он делает это до того, как список заполнен, поэтому он не находит значение.Любая идея о том, как это исправить?

Вот мой код

Вот где я получаю значения для раскрывающегося списка

function getProjects(id, proj_select_class)
{
    custID = id.options[id.selectedIndex].value;

    $.ajax({
        type: "POST",
        url: "index.php/home/projectlist",
        data: {custID : custID},
        dataType: "json",

        success:function (result){                
            var ddl = $(proj_select_class);

            ddl.children('option:not(:first)').remove();              
            for (var key in result) {
                if (result.hasOwnProperty(key)) {
                    ddl.append('<option value=' + key + '>' +  result[key] + '</option>');                              
                }
            }                         
        }

    }); 
}

И вот где я устанавливаю значения,AddNew () добавляет новую строку в мою таблицу.Это также внутри вызова ajax.

for (var row in result) {
    AddNew();                                                                   

    client_field = document.getElementById('clients'+id);
    project_field = document.getElementById('projects'+id); 

    client_value = $.trim(result[row].client_id);
    project_value = $.trim(result[row].project_id);     

    //set client                        
    client_field.value = client_value;                      

    getProjects(client_field, project_field, client_value);
    project_field.value = project_value;        
}

Ответы [ 2 ]

0 голосов
/ 30 декабря 2011

Исправлено ожиданием, пока ajax завершит работу, выполнив это.

$(document).ajaxComplete(function(){ set_values(result); });

set_values ​​- это еще одна функция, в которой я просто перебираю все свои результаты и устанавливаю все выпадающие значения

0 голосов
/ 30 декабря 2011

Возможно, попробуйте использовать пользовательскую привязку события, чтобы узнать, когда ваш код должен получить значение из списка. Для привязки к пользовательскому событию вы должны сделать что-то вроде:

$(document).bind("listpopulated", function(){ /*find value, call AddNew() */ });

и в вашей функции успеха ajax вызвать событие listpopulated так:

$(document).trigger("listpopulated");

Ссылки:

http://api.jquery.com/bind/

http://api.jquery.com/trigger/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...