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?


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.


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


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

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

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

Cela a fonctionné pour moi.



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/


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)


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

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é.


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.


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

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


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


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é


-1

ID utilisateur Pour l'élément, puis

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

-2

utilisez ceci et ça fonctionnera:

 $('select[name=selValue]').selectpicker('val', 1);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.