Як встановити вибране значення для вибору за допомогою плагіну 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
Я не впевнений, чого ви хочете досягти, значення встановлюється після того, як користувач натисне на цю опцію у виборі
Том Сардуй,

Так, адже дійсно значення походить від методу на виклик в ajax ...
jcvegan

1
Значення вибрано правильно, але ви його не бачили, оскільки плагін приховує реальний вибір і показує кнопку із не
упорядкованим

Так, я це знаю, але як це виправити ... Я маю на увазі ... користувач повинен побачити вибір на цьому
елементі

Відповіді:


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, доданий у моїй відповіді
Том Сардуй

Я стикаюся з тією ж проблемою, що я не в змозі вибрати попередньо вибрані значення, які користувач вибрав приватно.
Шрікант Пуллела

Чи потрібно після цього оновити селектор? @TomSarduy
ankit suthar

@ankitsuthar, так
Том Сардуй

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

Це все, що вам потрібно зробити. Не потрібно безпосередньо змінювати створений HTML-код Selector, достатньо просто змінити приховане поле вибору, а потім зателефонувати в selectpicker ('оновити').


8
Це має бути правильна відповідь! Виклик команди .selectpicker ('оновити') має вирішальне значення для вибору та оновлення поточного значення спадного списку, що працює на селекціонері. Зауважте, виклик оновлення на ВСІ елементи .selectpicker може бути повільним. Якщо ви знаєте об'єкт діяти, його бажано викликати оновити у цьому списку вибору.
nocarrier

$('.selectpicker').selectpicker('refresh'); може вбити вашу виставу, якщо у вас на одній сторінці багато вибірщиків
Мішель

Ще одна проблема, яку я знайшов - це не позначить вибір.
Sajeer Babu

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

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

16

Оновлення не потрібно, якщо параметр "val" використовується для встановлення значення, див. Скрипт . Використовуйте дужки для значення, щоб увімкнути кілька вибраних значень.

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


9

Насправді ваше значення встановлено, але вибраний вами вибір не оновлений

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

Правильний спосіб зробити це було б

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

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

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

3

Ви можете встановити вибране значення, викликавши метод val на елементі.

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

Це дозволить вибрати всі елементи в декількох виборах.

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

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


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

3

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

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



1

Незначна зміна відповіді на русявий випадок, коли у вас немає значень "жорсткого коду" для варіантів (тобто 1, 2, 3, 4 тощо)

Скажімо, ви візуалізуєте a <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>. У цьому випадку нічого не вибирається за замовчуванням, але ми хотіли, щоб перший елемент був завжди обраний.


1

На основі чудової відповіді @blushrt я оновлю цю відповідь. Просто за допомогою -

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

працює, якщо ви передзавантажили все необхідне для селектора.


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

Абд, у мене є php-скрипт, який передає формат json в ajax, де формат json такий: "машина": "8", "кольори": "червоний, синій, білий"} . У цьому випадку як можна вставити об'єкт "кольори", як це перевірено всередині 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

Користувацький ідентифікатор для елемента

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.