Как установить выбранное значение при выборе с помощью плагина selectpicker из начальной загрузки

97

Я использую плагин Bootstrap-Select вот так:

HTML :

<select name="selValue" class="selectpicker">
   <option value="1">Val 1</option>
   <option value="2">Val 2</option>
   <option value="3">Val 3</option>
   <option value="4">Val 4</option>
</select>

Javascript :

$('select[name=selValue]').selectpicker();

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

$('#mybutton').click(function(){
   $('select[name=selValue]').val(1);
});

Но ничего не происходит.

Как я могу этого добиться?

Jcvegan
источник
1
Я не уверен, чего вы хотите достичь, значение устанавливается, когда пользователь нажимает на эту опцию в выборе
Tom Sarduy
Да, потому что на самом деле значение исходит от метода при вызове ajax ...
jcvegan
1
Значение выбрано правильно, но вы его не видели, потому что плагин скрывает реальный выбор и показывает кнопку с неупорядоченным списком
Tom Sarduy
Да, я знаю это, но как это исправить ... Я имею в виду ... пользователь должен видеть выделение на этом элементе управления
jcvegan

Ответы:

148

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

//Get the text using the value of select
var text = $("select[name=selValue] option[value='1']").text();
//We need to show the text inside the span that the plugin show
$('.bootstrap-select .filter-option').text(text);
//Check the selected attribute for the real select
$('select[name=selValue]').val(1);

Редактировать:

Как указывает @blushrt, лучшее решение:

$('select[name=selValue]').val(1);
$('.selectpicker').selectpicker('refresh')

Изменить 2:

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

Том Сардуй
источник
29
Лучшим решением было бы просто: $('select[name=selValue]').val(1);$('.selectpicker').selectpicker('refresh');таким образом вы изменяете только скрытый выбор, вызывая selectpicker ('refresh'), перерисовывая кнопку.
blushrt 04
да, так лучше @blushrt, добавил к моему ответу
Tom Sarduy
Я столкнулся с той же проблемой, что я не могу выбрать предварительно выбранные значения, которые пользователь выбрал конфиденциально.
Srikanth Pullela 08
Обязательно ли обновлять selectpicker после этого ?? @TomSarduy
анкит сутар
@ankitsuthar, да
Tom Sarduy
72
$('select[name=selValue]').val(1);
$('.selectpicker').selectpicker('refresh');

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

румянец
источник
8
Это должен быть правильный ответ! Вызов команды .selectpicker ('refresh') имеет решающее значение для выбора и обновления текущего значения раскрывающегося списка, управляемого selectpicker. Обратите внимание, что вызов обновления для ВСЕХ элементов .selectpicker может быть медленным. Если вы знаете, что объект должен работать, предпочтительнее вызывать обновление для этого единственного списка выбора.
nocarrier
$('.selectpicker').selectpicker('refresh'); может убить вашу производительность, если у вас будет много выборщиков на одной странице
Мишель
Еще одна проблема, которую я обнаружил, заключается в том, что этот флажок не будет отмечен.
Саджир Бабу
44
$('.selectpicker').selectpicker('val', YOUR_VALUE);
Jesterhead
источник
Я пробовал ваше решение ... но он показывает «ничего не выбрано» в моем выборе, хотя я выбрал значение, и я получаю то же самое от ресурса, где я храню данные.
Шилпи Джайсвал
16

Обновление не требуется, если для установки значения используется параметр "val", см. Скрипт . Используйте скобки для значения, чтобы включить несколько выбранных значений.

$('.selectpicker').selectpicker('val', [1]); 
Cederlof
источник
10
$('#mybutton').click(function(){
   $('select[name=selValue]').val(1);
   $('select[name=selValue]').change();
});

Это сработало для меня.

Джанит Видаршана
источник
9

Фактически ваше значение установлено, но ваш selectpicker не обновляется

Как вы можете прочитать в документации
https://silviomoreto.github.io/bootstrap-select/methods/#selectpickerval

Правильный способ сделать это

$('.selectpicker').selectpicker('val', 1);

Для нескольких значений вы можете добавить массив значений

$('.selectpicker').selectpicker('val', [1 , 2]);
Хиллар Капста
источник
4

$('selector').selectpicker('val',value);

вместо селектора вы можете указать селектор либо класс, либо идентификатор, например: $('#mySelect').selectpicker('val',your_value)

Вивек Корада
источник
3

Вы можете установить выбранное значение, вызвав метод val для элемента.

$('.selectpicker').selectpicker('val', 'Mustard');
$('.selectpicker').selectpicker('val', ['Mustard','Relish']);

Это выберет все элементы в множественном выборе.

$('.selectpicker').selectpicker('selectAll');

подробности доступны на сайте: https://silviomoreto.github.io/bootstrap-select/methods/

Аваниш Кумар
источник
Я пробовал ваше решение ... но он показывает «ничего не выбрано» в моем выборе, хотя я выбрал значение, и я получаю то же самое от ресурса, где я храню данные.
Шилпи Джайсвал
1

Небольшой вариант ответа blushrt, когда у вас нет «жестко запрограммированных» значений для параметров (например, 1, 2, 3, 4 и т. Д.)

Допустим, вы визуализируете объект <select>со значениями параметров, которые являются идентификаторами GUID некоторых пользователей. Затем вам нужно будет каким-то образом извлечь значение параметра, чтобы установить его в <select>.

Далее мы выбираем первую опцию выбора.

HTML :

<select name="selValue" class="selectpicker">
   <option value="CD23E546-9BD8-40FD-BD9A-3E2CBAD81A39">Dennis</option>
   <option value="4DDCC643-0DE2-4B78-8393-33A716E3AFF4">Robert</option>
   <option value="D3017807-86E2-4E56-9F28-961202FFF095">George</option>
   <option value="991C2782-971E-41F8-B532-32E005F6A349">Ivanhoe</option>
</select>

Javascript :

// Initialize the select picker.
$('select[name=selValue]').selectpicker();

// Extract the value of the first option.
var sVal = $('select[name=selValue] option:first').val();

// Set the "selected" value of the <select>.
$('select[name=selValue]').val(sVal);

// Force a refresh.
$('select[name=selValue]').selectpicker('refresh');

Мы использовали это при выборе с ключевым словом multiple <select multiple>. В этом случае по умолчанию ничего не выбирается, но мы хотели, чтобы всегда был выбран первый элемент.

Кристиан Винтер
источник
1

Основываясь на отличном ответе @blushrt, я обновлю этот ответ. Просто используя -

$("#Select_ID").val(id);

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

Йонатан
источник
1
$('.selectpicker').selectpicker("val", "value");
Абд Абугхазале
источник
Abd, у меня есть скрипт php, который передает формат json в ajax, где формат json такой: "car": "8", "colors": "красный, синий, белый"} . В этом случае, как можно вставить объект "цвета" как отмеченный внутри selectpicker с помощью этого метода $ ('. Selectpicker'). Selectpicker ("val", "data.colors"); ?
Мишель Ксавье,
0
$('.selectpicker').selectpicker('val', '0');

Если '0' - это значение элемента, который вы хотите выбрать

kevin3954
источник
0

Ну еще один способ сделать это, с этим ключевым словом, вы можете просто получить объект в этом и манипулировать его значение. Например:

$("select[name=selValue]").click(
    function() {
        $(this).val(1);
    });
Мохд Навед
источник
0
$('.selectpicker option:selected').val();

Просто введите опцию: выбрано, чтобы получить значение, потому что средство выбора начальной загрузки меняется на и отображается по-другому. Но выберите еще там выбранный

Фабио Алмейда
источник
-1

ID пользователя для элемента, затем

document.getElementById('selValue').value=Your Value;
$('#selValue').selectpicker('refresh');
AB Шаман
источник
-2

используйте это, и это сработает:

 $('select[name=selValue]').selectpicker('val', 1);
Лучано Мартинс
источник