2017-01-10 92 views
0

背景信息無法通過jQuery填充下拉框

我有一些加載Web表單的PHP/HTML/JavaScript代碼。出於討論的目的,假設這個表單是「編輯小部件細節」頁面。 這個表格包含一個表...和一堆行。每行有一個下拉框 - 每行都有相同的一個下拉框 - 並且下拉列表的選定值是根據數據庫中先前保存的數據確定的。

問題

下拉列表的下降不是由.append()填充調用我做,我不知道爲什麼。

代碼

下面是我的邏輯的事件順序:

  1. PHP邏輯 - 通過需要被列入表中的每個記錄循環...並創建一個空盒像這樣:

    for ($i=0; $i < count($w_details['tc']); $i++) {  
         .... 
        //logic to build basic table structure including: 
        echo "<td><select placeholder='Domain:' name='domain" .$i ."' id=domain" .$i ."'></select></td>"; 
    
        echo "<input type='hidden' class='domainvals' id='hidden_domain" .$i . "' name='hidden_domain" .$i. "' value='" .$wdetails['tc'][$i]['destdomain'] . "'/>"; 
        ... 
        } 
    

然後,一旦我頁完蛋渲染,我有這樣的邏輯,我的document.ready部分:

//populate domain list. 
    $.ajax({ 
      url:"<?php echo site_url('domain/domainlist');?>", 
      type:'POST', 
      dataType:'json', 
      success: function(res) { 
       //loop through results 
       var htmlstring = "<option value='' disabled selected>Select the Domain</option>"; 
       for (var key in res) { 
        if (res.hasOwnProperty(key)) { 
          htmlstring += "<option value=" + res[key]['domain'] + ">" + res[key]['domain'] + "</option>"; 
        } 
       } 
       //find every hidden input that is storing a domain value 
       $('.domainvals').each(function (i, row) { 
        console.log($(this).val()) ; 
        $('#domain'+i).append(htmlstring); 
        //TODO: add logic to select the right value using $this.val(); 
        }); 

      }, 
      error: function(xhr, req, err) { 
       //var err = eval("(" + xhr.responseText + ")"); 
       console.log(err.Message); 
      } 
    }); 

我試過到目前爲止:

在F12調試窗口,我已經驗證了,我有一個「domain0」這樣的控制:

$("#domain0").find('option') 

沒有錯誤信息出現(只是空數組/列表),所以我肯定已經創建它。我也可以看到窗體上的控件。

我試圖改變我的代碼,追加HTML硬編碼的名字,像這樣:

$('#domain0').append(htmlstring); 

同樣,沒有錯誤,但它不填充列表。

任何建議,將不勝感激。我確定這很簡單,我只是想念。

+0

因爲html已經動態添加jquery選擇器可能無法在DOM中找到它。嘗試如下所示:'$(document).find('#domain0')。append(htmlstring)' – bos570

+0

我不明白的是,一旦文檔加載完成,您就會使用ajax來填充表單。但是,PHP也可以非常容易地執行此操作,''json_decode(file_get_contents('path/to/file.json'),true)'。我建議只將用戶事件綁定到ajax請求。 – Xorifelse

+0

@ bos570,hm ...創建基本選擇的html不是動態的。只是列表的選項是通過jquery – Happydevdays

回答

0

您可以將使用Javascript/jQuery的這樣一個選項:

$('myDropDown').append($('<option>', { 
    value: optionValue, 
    text: optionText 
})); 
0

如果要添加這些域

$( 「#域(N)」)

元素動態,那麼你不能像訪問它們一樣

$("#domain0") 

$(document).find("#domain0") or $("body").find("#domain0") 

代替。