Comment définir la valeur sélectionnée lors de la sélection à l'aide du plug-in Selectpicker de bootstrap

97

J'utilise le plugin Bootstrap-Select comme ceci:

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

Maintenant, je veux définir la valeur sélectionnée sur cette sélection lorsque vous cliquez sur le bouton ... quelque chose comme ceci:

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

Mais rien ne se passe.

Comment puis-je atteindre cet objectif?

jcvegan
la source
1
Je ne suis pas sûr de ce que vous voulez réaliser, la valeur est définie une fois que l'utilisateur clique sur cette option dans la sélection
Tom Sarduy
Oui parce que vraiment la valeur vient d'une méthode sur un appel ajax ...
jcvegan
1
La valeur est correctement sélectionnée, mais vous ne l'avez pas vue car le plugin cache la sélection réelle et affiche un bouton avec une liste non ordonnée
Tom Sarduy
Oui je sais cela, mais comment y remédier ... je veux dire ... l'utilisateur doit voir la sélection sur ce contrôle
jcvegan

Réponses:

148

La valeur est correctement sélectionnée, mais vous ne l'avez pas vue car le plugin cache la sélection réelle et affiche un bouton avec une liste non ordonnée, donc, si vous voulez que l'utilisateur voie la valeur sélectionnée sur la sélection, vous pouvez faire quelque chose comme ceci :

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

Éditer:

Comme le souligne @blushrt, une meilleure solution est:

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

Modifier 2:

Pour sélectionner plusieurs valeurs, transmettez les valeurs sous forme de tableau.

Tom Sarduy
la source
29
Une meilleure solution serait simplement: De $('select[name=selValue]').val(1);$('.selectpicker').selectpicker('refresh');cette façon, vous ne modifiez que la sélection cachée, l'appel de selectpicker ('refresh') redessine le bouton.
blushrt
oui, cette façon est meilleure @blushrt, ajouté à ma réponse
Tom Sarduy
Je suis confronté au même problème que je ne peux pas sélectionner les valeurs présélectionnées que l'utilisateur a sélectionnées en privé.
Srikanth Pullela
Est-il nécessaire de rafraîchir le sélecteur après? @TomSarduy
ankit suthar
@ankitsuthar, oui
Tom Sarduy
72
$('select[name=selValue]').val(1);
$('.selectpicker').selectpicker('refresh');

C'est tout ce que vous devez faire. Pas besoin de changer directement le html généré de selectpicker, il suffit de changer le champ de sélection caché, puis d'appeler le selectpicker ('refresh').

rougir
la source
8
Cela devrait être la bonne réponse! L'appel de la commande .selectpicker ('refresh') est crucial pour sélectionner et mettre à jour la valeur actuelle d'une liste déroulante alimentée par selectpicker. Veuillez noter que l'appel de refresh sur TOUS les éléments .selectpicker peut être lent. Si vous savez que l'objet doit fonctionner, il est préférable d'appeler le rafraîchissement sur cette liste de sélection unique.
nocarrier
$('.selectpicker').selectpicker('refresh'); peut tuer votre performance si vous avez beaucoup de sélecteurs sur une seule page
Michel
Un autre problème que j'ai trouvé est que cela ne coche pas la sélection.
Sajeer Babu
43
$('.selectpicker').selectpicker('val', YOUR_VALUE);
Bouffon
la source
J'ai essayé votre solution .. mais son affichage «rien de sélectionné» dans ma sélection, bien que j'ai sélectionné la valeur et que j'obtiens la même chose de la ressource où je stocke des données.
Shilpi Jaiswal
16

Aucune actualisation n'est nécessaire si le paramètre "val" est utilisé pour définir la valeur, voir fiddle . Utilisez des crochets pour la valeur afin d'activer plusieurs valeurs sélectionnées.

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

Cela a fonctionné pour moi.

Janith Widarshana
la source
9

En fait, votre valeur est définie, mais votre sélecteur n'est pas actualisé

Comme vous pouvez le lire dans la documentation
https://silviomoreto.github.io/bootstrap-select/methods/#selectpickerval

La bonne façon de procéder serait

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

Pour plusieurs valeurs, vous pouvez ajouter un tableau de valeurs

$('.selectpicker').selectpicker('val', [1 , 2]);
Hillar Kapsta
la source
3

Vous pouvez définir la valeur sélectionnée en appelant la méthode val sur l'élément.

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

Cela sélectionnera tous les éléments dans une sélection multiple.

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

les détails sont disponibles sur le site: https://silviomoreto.github.io/bootstrap-select/methods/

Awanish Kumar
la source
J'ai essayé votre solution .. mais son affichage «rien de sélectionné» dans ma sélection, bien que j'ai sélectionné la valeur et que j'obtiens la même chose de la ressource où je stocke des données.
Shilpi Jaiswal
3

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

à la place du sélecteur, vous pouvez vous donner le sélecteur de classe ou d'id par exemple: $('#mySelect').selectpicker('val',your_value)

vivek korada
la source
2
var bar= $(#foo).find("option:selected").val();
abdul
la source
1

Une légère variation de la réponse de blushrt lorsque vous n'avez pas de valeurs "codées en dur" pour les options (c'est-à-dire 1, 2, 3, 4, etc.)

Supposons que vous restituiez un <select>avec les valeurs d'options étant les GUID de certains utilisateurs. Ensuite, vous devrez en quelque sorte extraire la valeur de l'option afin de la définir sur le <select>.

Dans ce qui suit, nous sélectionnons la première option de la sélection.

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

Nous l'avons utilisé dans une sélection avec le mot-clé multiple <select multiple>. Dans ce cas, rien n'est sélectionné par défaut, mais nous voulions que le premier élément soit toujours sélectionné.

Kristian Vinther
la source
1

Sur la base de la bonne réponse de @blushrt, je mettrai à jour cette réponse. Juste en utilisant -

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

fonctionne si vous avez préchargé tout ce dont vous avez besoin dans le sélecteur.

Yonatan
la source
1
$('.selectpicker').selectpicker("val", "value");
Abd Abughazaleh
la source
Abd, j'ai un script php qui passe le format json à ajax où le format json est comme ça: "car": "8", "colors": "red, blue, white"} . Dans ce cas, comment insérer l'objet "couleurs" comme vérifié dans selectpicker en utilisant cette méthode $ ('. Selectpicker'). Selectpicker ("val", "data.colors"); ?
Michel Xavier le
0
$('.selectpicker').selectpicker('val', '0');

Le «0» étant la valeur de l'élément que vous souhaitez sélectionner

kevin3954
la source
0

Eh bien, une autre façon de le faire est, avec ce mot - clé, vous pouvez simplement obtenir l'objet dans celui-ci et manipuler sa valeur. Par exemple :

$("select[name=selValue]").click(
    function() {
        $(this).val(1);
    });
Mohd Naved
la source
0
$('.selectpicker option:selected').val();

Il suffit de mettre l'option: sélectionné pour obtenir une valeur, car le sélecteur de bootstrap change en et apparaît de manière différente. Mais sélectionnez toujours là sélectionné

Fabio Almeida
la source
-1

ID utilisateur Pour l'élément, puis

document.getElementById('selValue').value=Your Value;
$('#selValue').selectpicker('refresh');
AB Shaman
la source
-2

utilisez ceci et ça fonctionnera:

 $('select[name=selValue]').selectpicker('val', 1);
Luciano Martins
la source