2017-02-16 14 views
0

Я использую select2 v4.0.1 select box, который получает свои опции, успешно обновленные функцией ниже.Как установить опцию 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") 
    } 
    }); 

}; 

Edit:. $ ("# myselect") HTML (""); удалена из второй функции, я ошибочно положил ее туда, обрезая нужный код. У меня проблема.

Редактировать 2: При наведении указателя мыши на различные параметры, в этом случае высокая эффективность происходит в инструментах разработчика хром. Числа в конце подсветки - это id в базе данных, которые я назначаю как значения параметров.

enter image description here

ответ

1

Удалить $("#myselect").html(""); внутри функцию editTableUpdate, которая клиринговая все варианты.

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 заменяется на response.length! = 0 внутри оператора if. – mhshimul

+0

Спасибо за предложение, что было бы лучше проверить. Но response.val! = 0 все еще работает, функция не пропускает его; Раньше я поставил предупреждение. – Ahmet

0

Я решил проблему благодаря предложениям shi. У меня было 2 синтаксических ошибки в разных разделах моста, вызывающие сбои, но они были проигнорированы инструментом разработчиков. Код работает отлично, как я его разместил.

 Смежные вопросы

  • Нет связанных вопросов^_^