Cómo establecer el valor seleccionado en seleccionar usando el complemento selectpicker de bootstrap


97

Estoy usando el complemento Bootstrap-Select de esta manera:

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

Ahora quiero establecer el valor seleccionado para esta selección cuando se hace clic en el botón ... algo como esto:

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

Pero nada pasa.

¿Cómo puedo conseguir esto?


1
No estoy seguro de qué quiere lograr, el valor se establece una vez que el usuario hace clic en esa opción en la selección
Tom Sarduy

Sí, porque realmente el valor proviene de un método en una llamada ajax ...
jcvegan

1
El valor está seleccionado correctamente, pero no lo vio porque el complemento oculta la selección real y muestra un botón con una lista desordenada
Tom Sarduy

Sí, lo sé, pero cómo solucionarlo ... quiero decir ... el usuario debe ver la selección en este control
jcvegan

Respuestas:


148

El valor está seleccionado correctamente, pero no lo vio porque el complemento oculta la selección real y muestra un botón con una lista desordenada, por lo que, si desea que el usuario vea el valor seleccionado en la selección, puede hacer algo como esto :

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

Editar:

Como señala @blushrt, una mejor solución es:

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

Edición 2:

Para seleccionar varios valores, pase los valores como una matriz.


29
Una mejor solución sería: De $('select[name=selValue]').val(1);$('.selectpicker').selectpicker('refresh');esta manera, solo está cambiando la selección oculta, al llamar a selectpicker ('actualizar') se vuelve a dibujar el botón.
blushrt

sí, de esta manera es mejor @blushrt, agregado a mi respuesta
Tom Sarduy

Estoy enfrentando el mismo problema de que no puedo seleccionar valores preseleccionados que el usuario ha seleccionado por separado.
Srikanth Pullela

¿Es necesario actualizar el selector de selección después de él? @TomSarduy
ankit suthar

@ankitsuthar, sí
Tom Sarduy

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

Esto es todo lo que necesitas hacer. No es necesario cambiar el html generado de selectpicker directamente, simplemente cambie el campo de selección oculto y luego llame al selectpicker ('actualizar').


8
¡Esta debería ser la respuesta correcta! Llamar al comando .selectpicker ('actualizar') es crucial para la selección y actualización del valor actual de una lista desplegable activada por selectpicker. Tenga en cuenta que llamar a la actualización de TODOS los elementos .selectpicker puede ser lento. Si sabe que el objeto funciona, es preferible llamar a actualizar en esa lista de selección única.
nocarrier

$('.selectpicker').selectpicker('refresh'); puede matar su rendimiento si tiene muchos selectores en una página
Michel

Otro problema que encontré es que esto no marcará la selección.
Sajeer Babu

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

He probado su solución ... pero muestra "nada seleccionado" en mi selección, aunque he seleccionado un valor y obtengo lo mismo del recurso donde estoy almacenando datos.
Shilpi Jaiswal

16

No es necesario actualizar si se usa el parámetro "val" para establecer el valor, ver violín . Utilice corchetes para el valor para habilitar varios valores seleccionados.

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

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

Esto funcionó para mí.



3

Puede establecer el valor seleccionado llamando al método val en el elemento.

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

Esto seleccionará todos los elementos en una selección múltiple.

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

los detalles están disponibles en el sitio: https://silviomoreto.github.io/bootstrap-select/methods/


Probé su solución ... pero muestra 'nada seleccionado' en mi selección, aunque he seleccionado un valor y obtengo lo mismo del recurso donde estoy almacenando datos.
Shilpi Jaiswal

3

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

en lugar de selector, puede darle selector ya sea class o id, por ejemplo: $('#mySelect').selectpicker('val',your_value)


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

1

Una ligera variación de blushrt's respuesta para cuando no tiene valores "codificados" para las opciones (es decir, 1, 2, 3, 4, etc.)

Digamos que renderiza un <select>con valores de opciones que son GUID de algunos usuarios. Luego, deberá extraer de alguna manera el valor de la opción para establecerla en el <select>.

A continuación, seleccionamos la primera opción de la selección.

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

Usamos esto en una selección con la palabra clave múltiple <select multiple>. En este caso, no se selecciona nada por defecto, pero queríamos que el primer elemento siempre estuviera seleccionado.


1

Basado en la gran respuesta de @blushrt, actualizaré esta respuesta. Solo usando -

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

funciona si ha precargado todo lo que necesita en el selector.


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

Abd, tengo un script php que pasa el formato json a ajax donde el formato json es así: "car": "8", "colors": "red, blue, white"} . En este caso, ¿cómo se puede insertar el objeto "colores" como se marca dentro de selectpicker usando este método $ ('. Selectpicker'). Selectpicker ("val", "data.colors"); ?
Michel Xavier

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

Con el '0' siendo el valor del elemento que desea seleccionar


0

Bueno, otra forma de hacerlo es, con esta palabra clave, simplemente puede obtener el objeto en este y manipular su valor. P.ej :

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


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

Simplemente coloque la opción: seleccionada para obtener valor, porque el selector de selección de arranque cambia ay aparece de manera diferente. Pero seleccione todavía allí seleccionado


-1

ID de usuario para el elemento, luego

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.