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.