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

Я использую плагин 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);
});

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

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

24 ответа

Решение

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

//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:

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

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

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

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

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

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

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

На самом деле ваше значение установлено, но ваш селектор выбора не обновляется

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

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

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

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

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

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

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

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

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

Это позволит выбрать все элементы в мульти-выбор.

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

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

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

Ни одно из этих решений не помогло. В моем случае я использовал Bootstrap 5.x и v1.14.x для boostrap-select.

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

      $('#sel_control').selectpicker('val','1010');

Когда вы используете Bootstrap Selectpicker, вы должны использовать это, чтобы получить значение выбранного параметра.

      $('#membershipadmin').selectpicker("option:selected").val();

Это не вызоветonChangeна элементе выбора (если есть):

      $(element).val(myVal)
$(element).selectpicker('refresh')

Если при изменении также должно быть запущено:

      $(element).val(myVal)
$(element).selectpicker('refresh').trigger('change') // also trigger 'change'

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

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

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

Небольшая вариация ответа 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');

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

var bar= $(#foo).find("option:selected").val();

У меня отлично работало каждый раз следующее (Bootstrap 3.4.1):

         $("#myDropDown").val(MyDropDownValue).change();

как в:

         $("#ddlSalutations").val(data.SalutationID).change();

Ни один из методов, опубликованных здесь, не работает (больше), так как вы всегда будете получать следующую ошибку в своем браузере. Что-то должно было измениться с тех пор.

      Uncaught TypeError: $(...).selectpicker is not a function

Надеюсь, это поможет кому-то еще сходить с ума по этому поводу.

Кроме того, вы можете просто вызвать это для многозначного

$(<your select picker>).selectpicker("val", ["value1", "value2"])

Вы можете найти больше здесь https://developer.snapappointments.com/bootstrap-select/methods/

$('.selectpicker option:selected').val();

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

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

$("select[name=selValue]").click(
    function() {
        $(this).val(1);
    });
      $('select[name=selValue]').selectpicker('val', '1')

работает отлично.

Но

      var variable = '2' 

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

не работает с Bootstrap 5. В BS 4 работает.

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

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

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

      <select name="class" class="form-control selectpicker" data-live-search="true">
   <option value="" selected>I am default selected text</option>
   <option value="9a">9A</option>
   <option value="9b">9B</option>
</select>

примечание: пустая опция не будет учитываться, будет отображаться Ничего не выбрано из плагина

Идентификатор пользователя для элемента, то

document.getElementById('selValue').value=Your Value;
$('#selValue').selectpicker('refresh');

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

 $('select[name=selValue]').selectpicker('val', 1);
Другие вопросы по тегам