Come impostare il valore selezionato sulla selezione utilizzando il plug-in selectpicker da bootstrap


97

Sto usando il plug -in Bootstrap-Select in questo modo:

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

Ora voglio impostare il valore selezionato su questa selezione quando si fa clic sul pulsante ... qualcosa del genere:

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

Ma non succede niente.

Come posso raggiungere questo obiettivo?


1
Non sono sicuro di cosa vuoi ottenere, il valore viene impostato una volta che l'utente fa clic su quell'opzione nella selezione
— Tom Sarduy

Sì perché in realtà il valore proviene da un metodo su una chiamata ajax ...
— jcvegan

1
Il valore è selezionato correttamente, ma non l'hai visto perché il plugin nasconde la selezione reale e mostra un pulsante con un elenco non ordinato
— Tom Sarduy

Sì, lo so, ma come risolverlo ... Voglio dire ... l'utente deve vedere la selezione su questo controllo
— jcvegan

Risposte:


148

Il valore è selezionato correttamente, ma non l'hai visto perché il plugin nasconde la selezione reale e mostra un pulsante con un elenco non ordinato, quindi, se vuoi che l'utente veda il valore selezionato nella selezione puoi fare qualcosa del genere :

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

Modificare:

Come sottolinea @blushrt, una soluzione migliore è:

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

Modifica 2:

Per selezionare più valori, passare i valori come un array.


29
Una soluzione migliore sarebbe semplicemente: in $('select[name=selValue]').val(1);$('.selectpicker').selectpicker('refresh');questo modo stai solo modificando la selezione nascosta, richiamando selectpicker ('refresh') ridisegna il pulsante.
— arrossire

sì, in questo modo è meglio @blushrt, aggiunto alla mia risposta
— Tom Sarduy

Sto affrontando lo stesso problema che non riesco a selezionare i valori preselezionati che l'utente ha selezionato in modo non funzionante.
— Srikanth Pullela

È necessario aggiornare il selectpicker dopo di esso ?? @TomSarduy
— ankit suthar

@ankitsuthar, sì
— Tom Sarduy

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

Questo è tutto ciò che devi fare. Non è necessario modificare direttamente l'html generato di selectpicker, basta modificare il campo di selezione nascosto e quindi chiamare selectpicker ('refresh').


8
Questa dovrebbe essere la risposta corretta! Chiamare il comando .selectpicker ('refresh') è fondamentale per la selezione e l'aggiornamento del valore corrente di un elenco a discesa basato su selectpicker. Tieni presente che la chiamata all'aggiornamento su TUTTI gli elementi .selectpicker può essere lenta. Se si conosce l'oggetto da utilizzare, è preferibile chiamare il refresh su quell'unico elenco di selezione.
— nocarrier

$('.selectpicker').selectpicker('refresh'); può uccidere la tua performance se hai molti selettori su una pagina
— Michel

Un altro problema che ho riscontrato è che questo non spunta la selezione.
— Sajeer Babu

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

Ho provato la tua soluzione ... ma mostra "niente di selezionato" nella mia selezione, anche se ho selezionato il valore e ottengo lo stesso dalla risorsa in cui sto memorizzando i dati.
— Shilpi Jaiswal

16

Non è necessario alcun aggiornamento se il parametro "val" viene utilizzato per impostare il valore, vedere violino . Utilizzare le parentesi per il valore per abilitare più valori selezionati.

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

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

Questo ha funzionato per me.



3

È possibile impostare il valore selezionato chiamando il metodo val sull'elemento.

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

Questo selezionerà tutti gli elementi in una selezione multipla.

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

i dettagli sono disponibili sul sito: https://silviomoreto.github.io/bootstrap-select/methods/


Ho provato la tua soluzione ... ma mostra "niente di selezionato" nella mia selezione, anche se ho selezionato il valore e ottengo lo stesso dalla risorsa in cui sto memorizzando i dati.
— Shilpi Jaiswal

3

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

al posto del selettore puoi dare al selettore una classe o un id, ad esempio: $('#mySelect').selectpicker('val',your_value)


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

1

Una leggera variazione della risposta di blushrt per quando non si hanno valori "hard coded" per le opzioni (ad esempio 1, 2, 3, 4 ecc.)

Supponiamo che tu esegua il rendering di un <select>con i valori delle opzioni che sono GUID di alcuni utenti. Quindi dovrai in qualche modo estrarre il valore dell'opzione per impostarlo su <select>.

Di seguito selezioniamo la prima opzione di 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');

Lo abbiamo utilizzato in una selezione con la parola chiave multipla <select multiple>. In questo caso nulla è selezionato per impostazione predefinita, ma volevamo che il primo elemento fosse sempre selezionato.


1

Sulla base dell'ottima risposta di @blushrt, aggiornerò questa risposta. Sto solo usando -

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

funziona se hai precaricato tutto il necessario nel selettore.


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

Abd, ho uno script php che passa il formato json ad ajax dove il formato json è così: "car": "8", "colors": "red, blue, white"} . In questo caso come inserire l'oggetto "colors" come selezionato all'interno di selectpicker usando questo metodo $ ('. Selectpicker'). Selectpicker ("val", "data.colors"); ?
— Michel Xavier

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

Con "0" il valore dell'elemento che desideri selezionare


0

Bene, un altro modo per farlo è, con questa parola chiave, puoi semplicemente inserire l'oggetto in questo e manipolarne il valore. Per esempio :

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


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

Metti semplicemente l'opzione: selezionato per ottenere valore, perché il selettore bootstrap cambia in e appare in modo diverso. Ma seleziona ancora lì selezionato


-1

ID utente Per l'elemento, quindi

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.