Динамически помечать множественный выбор с помощью javascript - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь пометить множественный выбор, который у меня есть, данными c, полученными от функции ajax. Данные в порядке, они поступают в виде массива, но я не могу установить их на выбранные значения. Следуйте за фотографиями и кодом. Пи c ниже мой множественный выбор. enter image description here

Пи c ниже - это данные, которые я получаю:

enter image description here

И то, что я пытался до сих пор: json .idChaveDepartamento - это данные, которые я получаю, я делю их.

let idChaveDepartamento = json.idChaveDepartamento.split(',');
$('#Departamento').selectpicker('val', idChaveDepartamento);

или

let idChaveDepartamento = json.idChaveDepartamento.split(',');
$("#Departamento").val(idChaveDepartamento);

или даже пытался скопировать / вставить функцию, которую я нашел в inte rnet

let select = document.getElementById('Departamento');

  function in_array(needle, haystack, argStrict){

    var key = '', strict = !!argStrict;
    if (strict){
        for (key in haystack){
            if (haystack[key] === needle)
                return true;
        }
    }
    else{
       for (key in haystack){
            if (haystack[key] == needle)
                return true;
        }
    }
    return false;
}
if (select) {
   for (var i = 0; i < select.options.length; i++){
        //Select options matching array values, unselect others
        select.options[i].selected = in_array(select.options[i].value, idChaveDepartamento, false);
    }
}   

Но, к сожалению, ничего не работает. Данные, которые я получаю, имеют то же значение параметра выбора.

1 Ответ

0 голосов
/ 05 мая 2020

Для тех, кто видит этот вопрос и имеет ту же проблему, я смог решить эту проблему с помощью следующего кода:

<select name="mySelect" id="mySelect" >
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
</select>


<script>
const select = document.getElementById('mySelect');

const array = [1,2,3,4];

for (var i = 0; i < select.options.length; i++) {
    select.options[i].selected = array.indexOf(departamento.options[i].value) >= 0;
}
</script>

это будет повторять атрибут SELECTED для кратного выберите и добавьте один за другим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...