Не могу прикрепить данные к опции select2 - PullRequest
0 голосов
/ 28 октября 2019

Я хочу сделать форму редактирования и прикрепить данные из базы данных к опции select2. В форме вставки эта опция select2 позволяет искать данные в базе данных, когда мы вводим слово за словом. Я не могу прикрепить данные в этой опции select2. Я хочу сделать эту опцию select2 заполнить данными из базы данных, а также может изменить данные, как в форме вставки. Я уже пробовал $ ('# requestor'). Val ($ row ['requestor']);но данные не появляются. Кто-нибудь может мне помочь ???

 <select class="requestor form-control" name="requestor" id="requestor" style="width:700px"  required="required">
 <option value=""></option>
 </select>

 //search data in database word by word
 $('.requestor').select2({
            placeholder: 'Requestor Name',
            ajax:{
                url: "<?php echo base_url('Hire_4/select_personnel'); ?>",
                dataType: "json",
                delay: 250,
                processResults: function(data){
                    var results = [];

                    $.each(data, function(index, item){
                        results.push({
                            id: item.ID,
                            text: item.FullName,
                            option_value:item.ID
                        });     
                    });

                    return{
                        results: results,
                        cache: true,
                    };
                },
            }
        });
 function load() {
alert('ok');
//console.log(<?php echo $row['ID']; ?>);

if (<?php echo $row['ID']; ?> != '') {
  $('#requestor').val($row['requestor']);
}
}

window.onload = load;

Спасибо:)

1 Ответ

0 голосов
/ 28 октября 2019

Ваш код очень грязный. Будьте более понятны, как это:

<div class="col-md-12">
  <select style="width:100%;" name="requestor[]" id="requestor" class="select2-multiple" multiple></select> 
</div>  

Тогда:

var $ajax = $("#requestor");

$ajax.select2({
   ajax: {
        url: "<?php echo base_url('Hire_4/select_personnel'); ?>",
        type: "post",
        dataType: 'json',
        delay: 250,
        data: function (params) {
        return{             
           search: params.term
        };
   },
   processResults: function (data, params) {
   params.page = params.page || 1;
   return {
      results: data
   };
   },
   cache: true
   },
   language: "en",
   placeholder: "Requestor Name",
   allowClear: true,
   minimumInputLength: 3,
   maximumSelectionLength: 1,
   escapeMarkup: function (markup) { return markup; },
   templateResult: formatRepo,
   templateSelection: formatRepoSelection
});

function formatRepo(repo) {
   var markup = repo.text ;
   return markup;
}

function formatRepoSelection (repo) {
   return repo.Name.replace(/<\/?("[^"]*"|'[^']*'|[^>])*(>|$)/g, "");
}

Ваши данные Ajax должны иметь следующий формат:

data[0]['ID'] = 1; //You must have "ID" key
data[0]['Name'] = 'Name'; //You must have "Name" key

Это просто! Удачи.

...