2011-12-29 14 views
0

したがって、リストに値が入力される前にドロップダウンリストの値を選択しようとすると問題が発生します。基本的には、PHPからドロップダウン値を取得するためにAJAXポストを行うjavascript関数を呼び出します。リストの値を選択するはずですが、リストに値が入力される前にこれが行われるため、値が見つかりません。どのようにこれを修正するための任意のアイデア?私は、ドロップダウンリストリストがポピュレートされた後に動的に設定されたドロップダウンリストの値を選択する

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>');        
       } 
      }       
     } 

    }); 
} 

そしてHERESに私が値を設定するための値を取得する場所

HERESに私のコード

です。 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;   
} 

答えて

0

カスタムイベントバインディングを使用して、コードからリストから値をフェッチする必要がある場合があります。カスタムイベントにバインドするには、次のようなものだろう:

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

をし、あなたのAjaxの成功の機能にそれほどのような "listpopulated" イベントトリガー:

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

参考文献:

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

​​

+0

はこの作業を取得できませんでした値設定別の関数です。この機能は他のものによって使用されていたので、私はそれに問題がありました。 – user284584

0

Ajaxはこの

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

SET_VALUESを行うことによって実行が終了ゴマ待つことによって、それを修正することは、私はちょうど私のすべての結果をループし、すべてのドロップダウンが

関連する問題