2017-02-16 76 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个语法错误导致故障,但他们被开发人员工具忽略。代码工作正常,我发布它的方式。