如何仅使用选项值设置select2选项?

时间:2017-02-16 20:03:21

标签: jquery select2

我正在使用select2 v4.0.1选择框,它通过以下功能成功更新其选项。

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

2 个答案:

答案 0 :(得分: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");
       }
  });

}; 

答案 1 :(得分:0)

由于shi的建议,我解决了这个问题。我在不同的桥接部分有2个语法错误导致故障,但开发人员工具忽略了它们。代码在我发布它的方式上运行良好。