2017-02-16 74 views
0

我正在使用select2 v4.0.1選擇框,通過以下功能成功更新其選項。如何僅使用選項值設置select2選項?

function updateList(){ 

$("#myselect").html(""); 

    var updateList = { 

     operation:"updateList" 

    } 

    $.post("myphp.php", updateList).done(function(response) { 

    var counter = 0; 
    var arrayLength = response.length; 

    while(counter<arrayLength){ 

    var record = response[counter]; 
    $("#myselect").append('<option value="'+ record.id + '">' + record.name + '</option>') 
    $("#myselect").select2(); 
    ++counter;    
}; 
}); 
}; 

此更新程序後,但是,當我嘗試設置選擇的選項,下面的代碼似乎只對期權價值的工作,而不是選擇文本,因此我得到一個選擇,其中沒有任何文字。

function editTableUpdate() { 

    var editTableUpdate = { 

     ID: $("#selectrecord").val(), 
     operation: "editTableUpdate" 
    } 

    $.post("myphp.php", editTableUpdate).done(function(response) { 
     if(response.val != 0){ 

      var record = response[0]; 
      $("#myselect").val(record.id).trigger("change") 
    } 
    }); 

}; 

編輯: $( 「#myselect」)HTML( 「」);從第二個功能中刪除,我錯誤地將它放在那裏,同時修剪必要的代碼。我一直有這個問題。

編輯2:懸停在不同的選項上,這是chrome的開發人員工具發生高級配置的地方。突出顯示末尾的數字是數據庫中的id,我將其作爲選項值分配。

enter image description here

回答

1

您editTableUpdate功能,這是清除所有選項中刪除$("#myselect").html("");

function editTableUpdate() { 

    var editTableUpdate = { 

     ID: $("#selectrecord").val(), 
     operation: "editTableUpdate" 
    } 

    $.post("myphp.php", editTableUpdate).done(function(response) { 
     if(response.length!= 0) {  
      var record = response[0]; 
      $("#myselect").val(record.id).trigger("change"); 
     } 
    }); 

}; 
+0

對不起,這不應該在那裏,原來的代碼就像$(「#editcname,#editcsurname,#editcgsm,#editcemail,#editcexp」)。val(「」); var updateEditPlc = {cID: $(「#selectclientedit」)...等,我裁剪和編輯它,以減少你必須經歷的代碼量。這是不是在原代碼中,我現在糾正了片段。問題依然存在,我原本不清楚選項,它們在#myselect裏面,沒有被刪除。 – Ahmet

+0

在我的回答中也檢查post方法,response.val!= 0被替換爲if語句中的response.length!= 0。 – mhshimul

+0

謝謝你的建議,這將是更好的檢查方法。但response.val!= 0仍然有效,函數不會跳過它;我已經提醒過測試。 – Ahmet

0

我解決了這個問題得益於shi的建議。我在不同的橋接部分有2個語法錯誤導致故障,但他們被開發人員工具忽略。代碼工作正常,我發佈它的方式。