как изменить значение вновь созданных тегов в select2 на новый идентификатор из базы данных - PullRequest
0 голосов
/ 28 июня 2019

Я использую mutliselect2 с опцией тегирования.Когда пользователь вводит тег, которого нет в списке (например, aab), он открывает модальное окно и вставляет этот тег в базу данных.Я хочу изменить значение вновь созданного тега с «aab» на идентификатор, который возвращается после вставки тега.

<div class="form-group" id="tagsDiv">
    <label class="main">{{__('messages.Tags')}}</label>
    <div class="input-group">
        {{ Form::hidden('tagids',old('tagids') ?? '',['class'=> 'form-control','id'=>'tagids']) }}
        {{ Form::select('tags[]',$tag_master, old('tags') ?? '', ['class'=> 'form-control '.(Auth::user()->votesCount() > $min_points_for_tag ? 'select2-tags' : 'm-select2'),'id'=> (Auth::user()->votesCount() > $min_points_for_tag ? 'select2_tags' : 'm_select2_tags'), 'data-plugin'=>'select2','multiple'=>true, 'style'=>'width:100%']) }}
    </div>
</div>  

Это код js для select2

$('.select2-tags').select2({

minimumInputLength: 2,
tags: true,
tokenSeparators: [",", " "],

  ajax: {
    url: "{{route('getTagsAjax')}}",
    dataType: 'json',
    delay: 250,
    data: function (params) {
      return {
            search: params.term,
            page: params.page || 1,
            category_id : $("#qcategory_id").val(),
            specialty_id : $("#m_select2_speciality").val()
      };
    },
    processResults: function (data, params) {
      params.page = params.page || 1;

      return {
            results: $.map(data.data, function (item) {
                return {
                    text: item.title,
                    id: item.id
                }
            }),
            pagination: {
                more: (params.page * 10) < data.total
            }
      };
    },
    cache: true
  }
});  

Этот код открывает модальный режим при выборе тега

$('.select2-tags').on('select2:select', function (e) {
  var specialty = $("#m_select2_speciality");
  var data = [];

  $('[name="specialities[]"] option:selected').each(function(){
     var option = $(this);
      data.push({value : option.attr('value'), text : option.text()});
  })
  if(isNaN(e.params.data.id)){
    $('#addTagModal').modal();
    $('#addTagModal #tagTitle').val(e.params.data.id);

    $.each(data,function(index,json){
      var value = data[index].value;
      var exists = $("#selectSpeciality option")
           .filter(function (i, o) { return o.value === value; })
           .length > 0;
      if (!exists) {
        $("#selectSpeciality").append($("<option></option>").attr("value", data[index].value).text(data[index].text));
      }
  });

  }
});

Это код, который выполняетсяпосле модальной подачи

$(document).on('click', '#addTagDetails' , function(e) {
  e.preventDefault();
  $.ajax( {
    url:'{{route("ajaxAddTag")}}',
    type: 'POST',
    data: $("#formTagDetails").serialize(),
    success:function(result) {
      $('#addTagModal').modal('hide');
      if(result.status == 'success'){
          Swal.fire({
              text: result.message,
              type: "success",
          });
      }else {
        Swal.fire({
            text: result.message,
            type: "error",
        });
      }
     }
  });

});

Пожалуйста, помогите мне найти решение

...