Как установить выбранное значение jquery select2?


100

Это относится к кодам до версии select2 4

У меня есть простой код для select2получения данных из ajax

$("#programid").select2({
  placeholder: "Select a Program",
  allowClear: true,
  minimumInputLength: 3,
  ajax: {
    url: "ajax.php",
    dataType: 'json',
    quietMillis: 200,
    data: function (term, page) {
      return {
        term: term, //search term
        flag: 'selectprogram',
        page: page // page number
      };
    },
    results: function (data) {
      return {results: data};
    }
  },
  dropdownCssClass: "bigdrop",
  escapeMarkup: function (m) { return m; }
});

Этот код работает, однако мне нужно установить для него значение, как в режиме редактирования. Когда пользователь выбирает значение в первый раз, оно будет сохранено, и когда ему нужно отредактировать это значение, оно должно появиться в том же меню выбора ( select2), чтобы выбрать ранее выбранное значение, но я не могу найти способ.

ОБНОВИТЬ:

Код HTML:

<input type="hidden" name="programid" id="programid" class="width-500 validate[required]">

Программный доступ Select2 с этим не работает.


У вас должна быть возможность просто установить выбранное значение в html или использовать$("#programid").val()
Explosion Pills

@ExplosionPills Negative, я тоже пробовал, у меня пустое значение. Как мне использовать programid.val ()? Я получил значение с сервера, и мне нужно установить его в это скрытое поле select2.
ClearBoth 07

@ClearBoth Не уверен, что понимаю, что вы имеете в виду. Вы пытаетесь установить для «выбранного» значения компонента Select2 один из результатов, полученных с помощью AJAX?
An Phan

@AnPhan Да, есть ли способ сделать это?
ClearBoth,

@ClearBoth Есть. Проверьте мой ответ ниже.
An Phan

Ответы:


62

Чтобы динамически установить "selected" значение компонента Select2:

$('#inputID').select2('data', {id: 100, a_key: 'Lorem Ipsum'});

Где второй параметр - объект с ожидаемыми значениями.

ОБНОВИТЬ:

Это действительно работает, просто хочу отметить, что в новом select2 «a_key» - это «текст» в стандартном объекте select2. так:{id: 100, text: 'Lorem Ipsum'}

Пример:

$('#all_contacts').select2('data', {id: '123', text: 'res_data.primary_email'});

Спасибо @NoobishPro


1
Я пытался использовать только id select2 ('val', '1'), но это не сработало .. Спасибо
ClearBoth

6
Это действительно работает, просто хотел отметить, что в новом select2 «a_key» - это «текст» в стандартном объекте select2. итак: {id: 100, text: 'Lorem Ipsum'}
NoobishPro

2
то же самое здесь на v4. Я выдергивал волосы на этом. Я не думаю, что это возможно без использования JavaScript-решений. Ищу еще одно раскрывающееся меню jQuery / Bootstrap Select2 (2 дня возиться со всеми мыслимыми методами - никакой радости!)
MC9000

29
Select2 v4: $('#inputID').val(100).trigger('change') см. Select2.github.io/…
Пол

@NoobishPro и An Phan - Спасибо за ответ и комментарий
Sinto

105

ВЫБРАТЬ2 <V4


Шаг №1: HTML

<input name="mySelect2" type="hidden" id="mySelect2">

Шаг № 2: Создайте экземпляр Select2

$("#mySelect2").select2({
      placeholder: "My Select 2",
      multiple: false,
      minimumInputLength: 1,
      ajax: {
          url: "/elements/all",
          dataType: 'json',
          quietMillis: 250,
          data: function(term, page) {
              return {
                  q: term,
              };
          },
          results: function(data, page) {
              return {results: data};
          },
          cache: true
      },
      formatResult: function(element){
          return element.text + ' (' + element.id + ')';
      },
      formatSelection: function(element){
          return element.text + ' (' + element.id + ')';
      },
      escapeMarkup: function(m) {
          return m;
      }
});

Шаг № 3: Установите желаемое значение

$("#mySelect2").select2('data', { id:"elementID", text: "Hello!"});

Если вы используете select2 без AJAX, вы можете сделать следующее:

<select name="mySelect2" id="mySelect2">
  <option value="0">One</option>
  <option value="1">Two</option>
  <option value="2">Three</option>
</select>
/* "One" will be the selected option */
$('[name=mySelect2]').val("0");

Вы также можете сделать это:

$("#mySelect2").select2("val", "0");

ВЫБРАТЬ2 V4


Для select2 v4 вы можете напрямую добавить параметр / s следующим образом:

<select id="myMultipleSelect2" multiple="" name="myMultipleSelect2[]">
    <option value="TheID" selected="selected">The text</option>                                                                   
</select>

Или с JQuery:

var $newOption = $("<option selected='selected'></option>").val("TheID").text("The text")
 
$("#myMultipleSelect2").append($newOption).trigger('change');

другой пример

$("#myMultipleSelect2").val(5).trigger('change');

3
триггер ('изменение'); это важная часть
mihkov

$ ("# mySelect2"). select2 ("val", "0") - это вызовет событие jquery изменения значения. Как этого не допустить. Обычно, когда пользователь отправляет форму, после завершения я сбрасываю все данные формы. Сброс не сбрасывает select2. Использование select2 ("val", "0") вызовет изменения, что безумно, поскольку от пользователя не будет никаких действий.
jumper rbk


Рекомендовано для .trigger ('change')
JP Dolocanog

23

HTML:

<select id="lang" >
   <option value="php">php</option>
   <option value="asp">asp</option>
   <option value="java">java</option>
</select>

JavaScript:

$("#lang").select2().select2('val','asp');

jsfiddle


2
как установить по тексту, а не по val
Ризван Патель

Вопрос был в том, как это сделать после загрузки с вызовом AJAX. В данном случае этот ответ не работает.
MC9000 05

это вызовет изменение значения select2, что будет странно, если у вас есть это событие для обработки, и оно сработает без того, чтобы пользователь сделал это
jumper rbk

17

Также, как я пытался, при использовании ajax в select2 методы программного управления для установки новых значений в select2 у меня не работают! Теперь я пишу этот код для решения проблемы:

$('#sel')
    .empty() //empty select
    .append($("<option/>") //add option tag in select
        .val("20") //set value for option to post it
        .text("nabi")) //set a text for show in select
    .val("20") //select option of select2
    .trigger("change"); //apply to select2

Вы можете протестировать полный пример кода по этой ссылке: https://jsfiddle.net/NabiKAZ/2g1qq26v/32/
В этом примере кода есть ajax select2, и вы можете установить новое значение с помощью кнопки.


Я использую другой displayKey и прочее (хотя это была плохая идея) - это отлично помогает при приемочных тестах с Codeception
MonkeyMonkey

2
Утомительно, конечно, но, как все узнают, Select2 v4 просто не имеет возможности сделать что-то настолько смехотворно простое, как установка выбора по умолчанию
MC9000

Я нашел этот ответ единственным способом сделать select2 v4 - ajax select.

13
var $option = $("<option selected></option>").val('1').text("Pick me");

$('#select_id').append($option).trigger('change');

Попробуйте это дополнение, затем выберите. Не дублирует опцию при вызове AJAX.


var $ option = $ ("<option selected> </option>") .val ('1'). text ("Выберите меня"); $ ('# select_id'). append ($ option) .trigger ('изменить');
Jigz 07

Спасибо. подтверждена работа над версией 4.0.0 (вызов ajax)
khalil

Еще один подтвержденный успех версии 4 с ajax.
кодер

Если вы используете окно с возможностью поиска с помощью ajax, это правильное решение. Этот сработал для меня июнь 2019.
Эрик Скифф

12

Мне это понравилось-

$("#drpServices").select2().val("0").trigger("change");

2
Пожалуйста, предоставьте объяснение, чтобы помочь пользователям понять, как работает ваш код, и ответить на вопрос OP.
Иван

@Ivan, я делал вот так $ ("# drpServices"). Val ("0"); который не будет выбирать taxt в раскрывающемся списке select2, для воздействия как на значение, так и на текст нам нужна функция изменения триггера select2. У меня это отлично работает. Надеюсь, пользователи поймут.
Аши

9

В текущей версии select2- v4.0.1 вы можете установить значение так:

var $example = $('.js-example-programmatic').select2();
$(".js-programmatic-set-val").on("click", function () { $example.val("CA").trigger("change"); });

// Option 2 if you can't trigger the change event.
var $exampleDestroy = $('.js-example-programmatic-destroy').select2();
$(".js-programmatic-set-val").on("click", function () { $exampleDestroy.val("CA").select2('destroy').select2(); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/js/select2.min.js"></script>
<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/css/select2.min.css" rel="stylesheet" />

using "trigger(change)"
<select class="js-example-programmatic">
  <optgroup label="Alaskan/Hawaiian Time Zone">
    <option value="AK">Alaska</option>
    <option value="HI">Hawaii</option>
  </optgroup>
  <optgroup label="Pacific Time Zone">
    <option value="CA">California</option>
    <option value="NV">Nevada</option>
    <option value="OR">Oregon</option>
    <option value="WA">Washington</option>
  </optgroup>
  <optgroup label="Mountain Time Zone">
    <option value="AZ">Arizona</option>
    <option value="CO">Colorado</option>
    <option value="ID">Idaho</option>
    <option value="MT">Montana</option>
    <option value="NE">Nebraska</option>
    <option value="NM">New Mexico</option>
    <option value="ND">North Dakota</option>
    <option value="UT">Utah</option>
    <option value="WY">Wyoming</option>
  </optgroup>
  <optgroup label="Central Time Zone">
    <option value="AL">Alabama</option>
    <option value="AR">Arkansas</option>
    <option value="IL">Illinois</option>
    <option value="IA">Iowa</option>
    <option value="KS">Kansas</option>
    <option value="KY">Kentucky</option>
    <option value="LA">Louisiana</option>
    <option value="MN">Minnesota</option>
    <option value="MS">Mississippi</option>
    <option value="MO">Missouri</option>
    <option value="OK">Oklahoma</option>
    <option value="SD">South Dakota</option>
    <option value="TX">Texas</option>
    <option value="TN">Tennessee</option>
    <option value="WI">Wisconsin</option>
  </optgroup>
  <optgroup label="Eastern Time Zone">
    <option value="CT">Connecticut</option>
    <option value="DE">Delaware</option>
    <option value="FL">Florida</option>
    <option value="GA">Georgia</option>
    <option value="IN">Indiana</option>
    <option value="ME">Maine</option>
    <option value="MD">Maryland</option>
    <option value="MA">Massachusetts</option>
    <option value="MI">Michigan</option>
    <option value="NH">New Hampshire</option>
    <option value="NJ">New Jersey</option>
    <option value="NY">New York</option>
    <option value="NC">North Carolina</option>
    <option value="OH">Ohio</option>
    <option value="PA">Pennsylvania</option>
    <option value="RI">Rhode Island</option>
    <option value="SC">South Carolina</option>
    <option value="VT">Vermont</option>
    <option value="VA">Virginia</option>
    <option value="WV">West Virginia</option>
  </optgroup>
</select>

using destroy: 
<select class="js-example-programmatic">
  <optgroup label="Alaskan/Hawaiian Time Zone">
    <option value="AK">Alaska</option>
    <option value="HI">Hawaii</option>
  </optgroup>
  <optgroup label="Pacific Time Zone">
    <option value="CA">California</option>
    <option value="NV">Nevada</option>
    <option value="OR">Oregon</option>
    <option value="WA">Washington</option>
  </optgroup>
  <optgroup label="Mountain Time Zone">
    <option value="AZ">Arizona</option>
    <option value="CO">Colorado</option>
    <option value="ID">Idaho</option>
    <option value="MT">Montana</option>
    <option value="NE">Nebraska</option>
    <option value="NM">New Mexico</option>
    <option value="ND">North Dakota</option>
    <option value="UT">Utah</option>
    <option value="WY">Wyoming</option>
  </optgroup>
  <optgroup label="Central Time Zone">
    <option value="AL">Alabama</option>
    <option value="AR">Arkansas</option>
    <option value="IL">Illinois</option>
    <option value="IA">Iowa</option>
    <option value="KS">Kansas</option>
    <option value="KY">Kentucky</option>
    <option value="LA">Louisiana</option>
    <option value="MN">Minnesota</option>
    <option value="MS">Mississippi</option>
    <option value="MO">Missouri</option>
    <option value="OK">Oklahoma</option>
    <option value="SD">South Dakota</option>
    <option value="TX">Texas</option>
    <option value="TN">Tennessee</option>
    <option value="WI">Wisconsin</option>
  </optgroup>
  <optgroup label="Eastern Time Zone">
    <option value="CT">Connecticut</option>
    <option value="DE">Delaware</option>
    <option value="FL">Florida</option>
    <option value="GA">Georgia</option>
    <option value="IN">Indiana</option>
    <option value="ME">Maine</option>
    <option value="MD">Maryland</option>
    <option value="MA">Massachusetts</option>
    <option value="MI">Michigan</option>
    <option value="NH">New Hampshire</option>
    <option value="NJ">New Jersey</option>
    <option value="NY">New York</option>
    <option value="NC">North Carolina</option>
    <option value="OH">Ohio</option>
    <option value="PA">Pennsylvania</option>
    <option value="RI">Rhode Island</option>
    <option value="SC">South Carolina</option>
    <option value="VT">Vermont</option>
    <option value="VA">Virginia</option>
    <option value="WV">West Virginia</option>
  </optgroup>
</select>

<button class="js-programmatic-set-val">set value</button>


Как я могу установить значение, не вызывая события изменения? Событие изменения запускает мои собственные обработчики событий, которые предназначены для случаев, когда пользователь изменяет значение вручную.
enumag 03

Другой вариант - destroyповторно вызвать плагин и снова вызвать его. См. Обновленный код.
Mosh Feu

Есть ли способ получить параметры, которые я изначально передал в select2, чтобы мне не пришлось их дублировать? В любом случае это решение больше похоже на взлом.
enumag 03

Конечно хач. Официальный способ в соответствии с документами - вызвать событие изменения. so that I wouldn't have to duplicate themЗачем их дублировать? Когда вы все еще там со всеми его . destroyselectoptions
Mosh Feu

Я имел в виду параметры, переданные в select2:$example.select2({ ... this ... })
enumag

6

Для Ajax используйте $(".select2").val("").trigger("change"). Это должно решить проблему.


6

Я думаю тебе нужна initSelectionфункция

$("#programid").select2({
  placeholder: "Select a Program",
  allowClear: true,
  minimumInputLength: 3,
  ajax: {
    url: "ajax.php",
    dataType: 'json',
    quietMillis: 200,
    data: function (term, page) {
      return {
        term: term, //search term
        flag: 'selectprogram',
        page: page // page number
      };
    },
    results: function (data) {
      return {results: data};
    }
  },
  initSelection: function (element, callback) {
    var id = $(element).val();
    if (id !== "") {
      $.ajax("ajax.php/get_where", {
        data: {programid: id},
        dataType: "json"
      }).done(function (data) {
        $.each(data, function (i, value) {
          callback({"text": value.text, "id": value.id});
        });
        ;
      });
    }
  },
  dropdownCssClass: "bigdrop",
  escapeMarkup: function (m) { return m; }
});

Это работает. Но не рекомендуется в версии 4.0
VisualBean


5

В Select2 V.4

использовать $('selector').select2().val(value_to_select).trigger('change');

Я думаю это должно работать



3
    $("#select_location_id").val(value);
    $("#select_location_id").select2().trigger('change');

Я решил свою проблему с помощью этого простого кода. Где #select_location_id - это идентификатор поля выбора, а значение - это значение параметра, указанного в поле выбора2.


2

Ответ Фана сработал для меня:

$('#inputID').select2('data', {id: 100, a_key: 'Lorem Ipsum'});

Но добавление изменения вызывает событие

$('#inputID').select2('data', {id: 100, a_key: 'Lorem Ipsum'}).change();

1
Я получаю сообщение об ошибке «Uncaught TypeError: $ (...). Select2 (...). Change is not a function (…)», когда делаю это таким образом. Я не думаю, что это возможно с версией 4.x Select2 - здесь ничего не работает с ajax.
MC9000 05

2

вы можете использовать этот код:

$("#programid").val(["number:2", "number:3"]).trigger("change");

где 2 в "number: 2" и 3 в "number: 3" - это поле идентификатора в массиве объектов.


1

Иногда select2()сначала загружается, и из-за этого элемент управления не отображает правильно ранее выбранное значение. Задержка на несколько секунд может решить эту проблему.

setTimeout(function(){                  
    $('#costcentreid').select2();               
},3000);


0

Я сделал что-то вроде этого, чтобы предустановить элементы в раскрывающемся списке select2 ajax

      //preset element values
        $(id).val(topics);
       //topics is an array of format [{"id":"","text":""}, .....]
          setTimeout(function(){
           ajaxTopicDropdown(id,
                2,location.origin+"/api for gettings topics/",
                "Pick a topic", true, 5);                      
            },1);
        // ajaxtopicDropdown is dry fucntion to get topics for diffrent element and url

0

Вам следует использовать:

var autocompleteIds= $("#EventId");
autocompleteIds.empty().append('<option value="Id">Text</option>').val("Id").trigger('change');

// For set multi selected values
var data =  [];//Array Ids
var option =  [];//Array options of Ids above
autocompleteIds.empty().append(option).val(data).trigger('change');

// Callback handler that will be called on success
request.done(function (response, textStatus, jqXHR) {
    // append the new option
    $("#EventId").append('<option value="' + response.id + '">' + response.text + '</option>');

    // get a list of selected values if any - or create an empty array
    var selectedValues = $("#EventId").val();
    if (selectedValues == null) {
        selectedValues = new Array();
    }
    selectedValues.push(response.id);   // add the newly created option to the list of selected items
    $("#EventId").val(selectedValues).trigger('change');   // have select2 do it's thing
});

0

Если вы используете поле ввода, вы должны установить для свойства «множественный» значение «истина». Например,

<script>
    $(document).ready(function () {

        var arr = [{ id: 100, text: 'Lorem Ipsum 1' },
            { id: 200, text: 'Lorem Ipsum 2'}];

        $('#inputID').select2({
            data: arr,
            width: 200,
            multiple: true
        });
    });
</script>

0

В select2 < version4нем есть опция initSelection()удаленной загрузки данных, с помощью которой можно установить начальное значение для ввода, как в режиме редактирования.

$("#e6").select2({
    placeholder: "Search for a repository",
    minimumInputLength: 1,
    ajax: { 
        // instead of writing the function to execute the request we use Select2's convenient helper
        url: "https://api.github.com/search/repositories",
        dataType: 'json',
        quietMillis: 250,
        data: function (term, page) {
            return {
                q: term, // search term
            };
        },
        results: function (data, page) {
            // parse the results into the format expected by Select2.
            // since we are using custom formatting functions we do not need to alter the remote JSON data
            return { results: data.items };
        },
        cache: true
    },
    initSelection: function(element, callback) {
        // the input tag has a value attribute preloaded that points to a preselected repository's id
        // this function resolves that id attribute to an object that select2 can render
        // using its formatResult renderer - that way the repository name is shown preselected
        var id = $(element).val();
        if (id !== "") {
            $.ajax("https://api.github.com/repositories/" + id, {
                dataType: "json"
            }).done(function(data) { callback(data); });
        }
    },
    formatResult: repoFormatResult, // omitted for brevity, see the source of this page
    formatSelection: repoFormatSelection,  // omitted for brevity, see the source of this page
    dropdownCssClass: "bigdrop", // apply css that makes the dropdown taller
    escapeMarkup: function (m) { return m; } // we do not want to escape markup since we are displaying html in results
});

Исходная документация: Select2 - 3.5.3


0

Просто чтобы добавить к любому, кто, возможно, придумал ту же проблему со мной.

Я пытался установить выбранный вариант моих динамически загружаемых параметров (из AJAX) и пытался установить один из вариантов как выбранный в зависимости от некоторой логики.

Моя проблема возникла из-за того, что я не пытался установить выбранный параметр на основе идентификатора, который должен соответствовать значению, а не значению, соответствующему имени!


0

Для нескольких значений примерно так:

$("#HouseIds").select2("val", @Newtonsoft.Json.JsonConvert.SerializeObject(Model.HouseIds));

что будет переводиться примерно так

$("#HouseIds").select2("val", [35293,49525]);

0

Это может помочь кому-то загрузить данные select2 из AJAX при загрузке данных для редактирования ( применимо для одиночного или множественного выбора ):

Во время загрузки моей формы / модели:

  $.ajax({
        type: "POST",
        ...        
        success: function (data) {
          selectCountries(fixedEncodeURI(data.countries));
         }

Позвоните, чтобы выбрать данные для Select2:

var countrySelect = $('.select_country');
function selectCountries(countries)
    {
        if (countries) {
            $.ajax({
                type: 'GET',
                url: "/regions/getCountries/",
                data: $.param({ 'idsSelected': countries }, true),

            }).then(function (data) {
                // create the option and append to Select2                     
                $.each(data, function (index, value) {
                    var option = new Option(value.text, value.id, true, true);
                    countrySelect.append(option).trigger('change');
                    console.log(option);
                });
                // manually trigger the `select2:select` event
                countrySelect.trigger({
                    type: 'select2:select',
                    params: {
                        data: data
                    }
                });
            });
        }
    }

и если у вас могут возникнуть проблемы с кодировкой, вы можете изменить их по своему усмотрению:

function fixedEncodeURI(str) {
        return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']').replace(/%22/g,"");

    }

0

если вы получаете свои значения из ajax, перед вызовом

$("#select_location_id").val(value);
$("#select_location_id").select2().trigger('change');

подтвердите, что вызов ajax завершен, используя функцию jquery, когда

$.when(ajax1(), ajax2(), ajax3(), ajax4()).done(function(a1, a2, a3, a4){
      // the code here will be executed when all four ajax requests resolve.
      // a1, a2, a3 and a4 are lists of length 3 containing the response text,
      // status, and jqXHR object for each of the four ajax calls respectively.
    }); 
как описано здесь [ Подождите, пока не будут выполнены все запросы jQuery Ajax?


0

Чтобы построить поверх ответа @tomloprod. По нечетной вероятности, что вы используете x-editable , имеете поле select2 (v4) и несколько элементов, которые вам нужно предварительно выбрать. Вы можете использовать следующий фрагмент кода:

$("#select2field").on("shown", function(e, editable){
    $(["test1", "test2", "test3", "test4"]).each(function(k, v){
        // Create a DOM Option and pre-select by default~
        var newOption = new Option(v.text, v.id, true, true);
        // Append it to the select
        $(editable.input.$input).append(newOption).trigger('change');
     });
});

и вот оно в действии:

var data = [
{
    id: 0,
    text: 'enhancement'
},
{
    id: 1,
    text: 'bug'
},
{
    id: 2,
    text: 'duplicate'
},
{
    id: 3,
    text: 'invalid'
},
{
    id: 4,
    text: 'wontfix'
}
];

$("#select2field").editable({
        type: "select2",
        url: './',
        name: 'select2field',
        savenochange: true,
        send: 'always',
        mode: 'inline',
        source: data,
        value: "bug, wontfix",
        tpl: '<select style="width: 201px;">',
        select2: {
            width: '201px',
            tags: true,
            tokenSeparators: [',', ' '],
            multiple: true,
            data:data
        },
        success: function(response, newValue) {
            console.log("success")
        },
        error: function(response, newValue) {
            if (response.status === 500) {
                return 'Service unavailable. Please try later.';
            } else {
                return response.responseJSON;
            }
        }
    });

var preselect= [
    {
        id: 1,
        text: 'bug'
    },
    {
    id: 4,
    text: 'wontfix'
}
];

 $("#select2field").on("shown", function(e, editable){
    $(preselect).each(function(k, v){
        // Create a DOM Option and pre-select by default~
        var newOption = new Option(v.text, v.id, true, true);
        // Append it to the select
        $(editable.input.$input).append(newOption).trigger('change');
     });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/js/select2.min.js"></script>
<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/css/select2.min.css" rel="stylesheet" />

<link href="//cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.0/bootstrap3-editable/css/bootstrap-editable.css" rel="stylesheet"/>
<script src="//cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.0/bootstrap3-editable/js/bootstrap-editable.min.js"></script>

<a id="select2field">bug, wontfix</a>

Я думаю, это сработает, даже если вы не используете x-editable. Надеюсь, что это могло кому-то помочь.


0

Вы можете использовать этот код:

    $('#country').select2("val", "Your_value").trigger('change');

Введите желаемое значение вместо Your_value

Надеюсь, это сработает :)


-2

Легко и приятно:

document.getElementById("select2-id_city-container").innerHTML = "Your Text Here";

И вы переходите id_cityк идентификатору вашего выбора.

Изменить: после комментария Глена я понимаю, что должен объяснить, почему и как это сработало для меня:

Я сделал select2работу действительно приятной для моей формы. Единственное, что у меня не получалось, так это показывать текущее выбранное значение при редактировании. Он искал сторонний API, сохранял новые и редактировал старые записи. Через некоторое время я понял, что мне не нужно правильно устанавливать значение, только метку внутри поля, потому что, если пользователь не изменит поле, ничего не произойдет. После поиска и изучения множества людей, у которых возникли проблемы с этим, я решил сделать это на чистом Javascript. Это сработало, и я написал, чтобы, возможно, кому-то помочь. Я также предлагаю установить для этого таймер.


Этот ответ - ужасный взлом, который даже не установил бы значение правильно.
Glen

Я сожалею о том, что. Я отредактирую свой ответ, чтобы объяснить, почему я его опубликовал.
bonafernando
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.