簡體   English   中英

列表填充后,在動態填充的下拉列表中選擇一個值

[英]Selecting a value on a dynamically populated dropdown list after the list has been populated

所以我有一個問題,我的代碼嘗試在填充列表之前在下拉列表中選擇一個值。 基本上,它調用一個執行AJAX發布的javascript函數,以從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;        
}

也許嘗試使用自定義事件綁定來了解您的代碼何時應從列表中獲取值。 要綁定到自定義事件,您可以執行以下操作:

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

並在您的ajax成功函數中觸發“ listpopulated”事件,如下所示:

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

參考文獻:

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

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

通過等待直到ajax完成運行來修復它

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

set_values是另一個函數,我僅循環遍歷所有結果並設置所有下拉值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM