Как установить выбранное значение при выборе с помощью плагина 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);
});

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

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


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);

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

16

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

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


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' - это значение элемента, который вы хотите выбрать


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');

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