Как изменить выбранное значение раскрывающегося списка select2 с помощью JqGrid?
Я использую select2 demo, но мне интересно, можно ли изменить выбранное значение в выпадающем меню.
например, если загружены четыре значения:"Any", "Fruit", "Vegetable", "Meat"
и выпадающий список по умолчанию "Any"
, как бы я мог изменить это на "Fruit"
в событии JqGrid loadComplete
?
это возможно?
14 ответов
для версии select2 >= 4.0.0
другие решения могут не работать, однако, следующие примеры должны работать.
Решение 1: вызывает запуск всех вложенных событий изменения, включая select2
$('select').val('1').trigger('change');
решение 2: вызывает только select2 изменение события для запуска
$('select').val('1').trigger('change.select2');
посмотреть этот jsfiddle примеры эти. Благодаря @minlare для решения 2.
объяснение:
скажем, у меня есть лучший друг с именами людей. Итак, Боб, Билл и Джон (в этом примере я предполагаю, что значение совпадает с именем). Сначала я инициализирую select2 на моем select:
$('#my-best-friend').select2();
теперь я вручную выбираю Bob в браузере. Потом Боб делает что-то нехорошее, и он мне больше не нравится. Таким образом, система отменяет выбор Bob для меня:
$('#my-select').val('').trigger('change');
или сказать, что я заставляю систему выбрать следующий в списке вместо Боб:
// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');
Примечания на веб-сайте Select 2 (см. устаревшие и удаленные методы) это может быть полезно для других:
.select2 ('val') Метод " val " устарел и будет удален в Select2 4.1. Устаревший метод больше не включает параметр triggerChange.
вы должны сразу позвонить .вместо этого val на Базовом элементе. Если вам нужен второй параметр (triggerChange), вы также должны вызвать .триггер ("изменить") на элементе.
$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');
смотреть на!--5-->select2 docs использовать НИЖЕ, чтобы получить/установить значение.
$("#select").select2("val"); //get the value
$("#select").select2("val", "CA"); //set the value
@PanPipes указал, что это изменилось на 4.x (пойдите, бросьте ему upvote ниже). val
теперь называется напрямую
$("#select").val("CA");
внутри loadComplete
из jqGrid вы можете получить любое значение, которое вы ищете, а затем установить значение selectbox.
обратите внимание на документы
обратите внимание, что для использования этого метод необходимо определить функция initSelection в Select2 умеет преобразуйте идентификатор объекта, который вы передаете в val (), в полный объект необходимо сделать выбор. Если вы присоединяетесь к элементу select эта функция уже предусмотрена для вас.
Это должно быть даже проще.
$("#e1").select2("val", ["View" ,"Modify"]);
но убедитесь, что значения, которые вы передаете, уже присутствуют в HTMl
просто хотел добавить второй ответ. Если у вас есть уже отображается select как select2, вам нужно будет отразить это в селекторе следующим образом:
$("#s2id_originalSelectId").select2("val", "value to select");
если вы хотите добавить новый value='newValue'
и text='newLabel'
, вы должны добавить этот код:
-
добавить новую опцию в
<select>
:var opt = "<option value='newValue' selected ='selected'>" + newLabel+ " </option>"; $(selLocationID).html(opt);
-
триггер
<select>
изменить на выбранное значение:$(selLocationID).val('newValue').trigger("change");
у вас есть два варианта-как состояния ответа @PanPipes вы можете сделать следующее.
$(element).val(val).trigger('change');
это приемлемое решение, только если к событию изменения не привязаны пользовательские действия. Решение, которое я использую в этой ситуации, - вызвать определенное событие select2, которое обновляет отображаемый выбор select2.
$(element).val(val).trigger('change.select2');
проблемы с параметр строку выбрать в select2:
с опцией:" option string1 /option " используется:
$('#select').val("string1").change();
но с опцией со значением: значение опции" E " string1 / option:
$('#select').val("E").change(); // you must enter the Value instead of the string
надеется, что это поможет кому-то бороться с той же проблемой.
Если вы хотите выбрать одно значение, используйте
$('#select').val(1).change()
Если вы хотите выбрать несколько значений, установите значение в массиве, чтобы вы могли использовать этот код
$('#select').val([1,2,3]).change()
для V4 Select2, если вы хотите изменить как значение select2, так и текстовое представление раскрывающегося списка.
var intValueOfFruit = 1;
var selectOption = new Option("Fruit", intValueOfFruit, true, true);
$('#select').append(selectOption).trigger('change');
это установит не только значение за кулисами, но и текстовое отображение для select2.
вытащил из https://select2.github.io/announcements-4.0.html#removed-methods
мой ожидаемый код :
$('#my-select').val('').change();
отлично работает благодаря @PanPipes для полезного.
Если у вас есть источник данных ajax, пожалуйста, обратитесь к этому для ошибок бесплатно
https://select2.org/programmatic-control/add-select-clear-items
/ / настройка элемента управления Select2
$('#mySelect2').select2({
ajax: {
url: '/api/students'
}
});
// извлечение выбранного элемента, и добавить в управление
var studentSelect = $('#mySelect2');
$.ajax({
type: 'GET',
url: '/api/students/s/' + studentId
}).then(function (data) {
// create the option and append to Select2
var option = new Option(data.full_name, data.id, true, true);
studentSelect.append(option).trigger('change');
// manually trigger the `select2:select` event
studentSelect.trigger({
type: 'select2:select',
params: {
data: data
}
});
});
// Set up the Select2 control
$('#mySelect2').select2({
ajax: {
url: '/api/students'
}
});
// Fetch the preselected item, and add to the control
var studentSelect = $('#mySelect2');
$.ajax({
type: 'GET',
url: '/api/students/s/' + studentId
}).then(function (data) {
// create the option and append to Select2
var option = new Option(data.full_name, data.id, true, true);
studentSelect.append(option).trigger('change');
// manually trigger the `select2:select` event
studentSelect.trigger({
type: 'select2:select',
params: {
data: data
}
});
});
шрифт : выберите 2 документации