Исправляемый с помощью Select2 не работает

#jquery #jquery-select2 #x-editable

#jquery #jquery-select2 #x-редактируемый

Вопрос:

У меня есть редактируемое поле, которое отображается динамически. Я хочу использовать select2 для его обновления.

  $(document).ajaxComplete(function () {

        $('.marketing_event_id').editable({
            emptytext: ".....",
            url: "ajax_xeditable_update.php?table=appointments",
            source: promo_codes,
            select2: {
                width: 200,
                placeholder: 'Select promotion code...',
                allowClear: true,
            }
        });


    });

//get the promo codes for the select2 box for xeditable. put it outside of ajaxcomplete so it doesn't keep firing off for every appt!

    var promo_codes = [];

    $.getJSON('ajax_get_json.php?what=location_promo_codes', function (data) {

        $.each(data, function (index) {
            promo_codes.push({
                id: data[index].value,
                text: data[index].text
            });
        });

    });
  

Поле select2 отображается со всеми параметрами JSON должным образом для пользователя, но когда выбран параметр и выбрана кнопка «галочка» для обновления поля, ничего не происходит. Я смотрю сетевой экран в Chrome, и URL-адрес для редактируемого поля даже не срабатывает.

Вот как выглядит мое поле html:

  echo '<h5>Promotion Code: <a href="#" class="marketing_event_id appointment' . $result->id . '" data-name="marketing_event_id" data-type="select2" data-value="';  if(!empty($result->marketing_event_id)) { echo $result->marketing_event_id; } echo '" data-placement="right" data-original-title="Enter the appointment promo code." data-pk="'. $result->id . '">' . $result->promo_code .'</a></h5>
  

Поля данных заполнены нормально. Я не вижу в этом ничего плохого.

Вот пример информации getJSON, которая используется для заполнения select2:

  [{"value":"663","text":"christmas2015"},{"value":"651","text":"web08"},{"value":"658","text":"paper0815"}] 
  

Я был бы рад предоставить больше кода, если это необходимо.

Кто-нибудь может объяснить, почему URL-адрес не запускается при обновлении поля? Спасибо.

Ответ №1:

Я понял это, но я не совсем понимаю, почему это работает.

Я добавил строку кода в редактируемую область:

  $('.marketing_event_id').editable({
            emptytext: ".....",
            container: 'body',  <---- THIS IS WHAT I ADDED TO MAKE IT WORK!!!!
            url: "ajax_xeditable_update.php?table=appointments",
            source: promo_codes,
            select2: {
                width: 200,
                placeholder: 'Select promotion code...',
                allowClear: true,
            }
        });