2011-02-01 15 views
123

Me preguntaba si es posible hacer que jQuery seleccione una opción, por ejemplo, el 4º elemento, en un cuadro desplegable.use jquery para seleccionar una opción desplegable

<select> 
    <option></option> 
    <option></option> 
    <option></option> 
    <option></option> 
    <option></option> 
</select> 

que desea que el usuario haga clic en un enlace, y luego tener el cambio de selección de cuadro de su valor, como si el usuario ha seleccionado haciendo clic en la opción.

+3

hacer sus opciones tienen un valor? – Victor

+2

Consulte este artículo: http://javascriptstutorial.com/blog/selecting-dropdown-element-using-javascript-or-jquery/ –

Respuesta

141

¿Qué tal

$('select>option:eq(3)').attr('selected', true); 

ejemplo en http://www.jsfiddle.net/gaby/CWvwn/


para las versiones modernas de jQuery se debe utilizar el .prop() en lugar de .attr()

$('select>option:eq(3)').prop('selected', true); 

ejemplo en http://jsfiddle.net/gaby/CWvwn/1763/

+1

Perfecto muchas gracias. – dotty

+1

imo esto ni siquiera debería funcionar; el estado seleccionado de una opción debería activarse cambiando el estado de la selección en su lugar :) –

+1

'selectElement.selectedIndex = index;' es lo que quiere decir Jack. – rlemon

121

La solución:

$("#control id").val('the value of the option'); 
+7

Gracias! Eso hizo el truco para mí. – Oliver

+1

no establece la opción 'selected' en el HTML. –

+0

puede publicar su código –

19

si sus opciones tienen un valor, usted puede hacer esto:

$('select').val("the-value-of-the-option-you-want-to-select"); 

'select' sería la identificación de su selecto o un selector de clase. o si solo hay una selección, puede usar la etiqueta tal como está en el ejemplo.

+2

Eso es exactamente lo que necesitaba. Gracias. – chapman84

3

Prefiero nth-child() a eq() ya que usa la indexación basada en 1 en lugar de la basada en 0, lo cual es un poco más fácil para mi cerebro.

//selects the 2nd option 
$('select>option:nth-child(2)').attr('selected', true); 
+0

El "índice 1-based" es mejor cuando se manipulan cosas con fechas. Me salva de muchos problemas. Gracias. – TCB13

2

respuesta con ID:

$('#selectBoxId').find('option:eq(0)').attr('selected', true); 
35

HTML seleccionar elementos tienen una propiedad selectedIndex que se puede escribir a fin de seleccionar una opción en particular:

$('select').prop('selectedIndex', 3); // select 4th option 

Usando llanura JavaScript esto puede se puede lograr por:

// use first select element 
var el = document.getElementsByTagName('select')[0]; 
// assuming el is not null, select 4th option 
el.selectedIndex = 3; 
+4

Esta debería ser la respuesta aceptada ... Parece la solución más limpia y más limpia ... –

+1

El problema es que no activa un evento 'onchange'. –

+1

@GuyKorland Esto sucede sin ninguna de las otras respuestas, demostradas [aquí] (http://jsbin.com/ehahug/1/); si desea que un evento se dispare, debe hacerlo manualmente. –

0
$('select>option:eq(3)').attr('selected', 'selected'); 

Una advertencia aquí es si tiene javascript viendo el evento de cambio de selección/opción que necesita agregar .trigger('change') para que se convierta el código.

$('select>option:eq(3)').attr('selected', 'selected').trigger('change'); 

porque sólo llamar .attr('selected', 'selected') no desencadena el evento

20

La forma más sencilla es val(value) función:

$('select').val(2); 

Y para obtener el valor seleccionado le da ningún argumento:

$('select').val(); 

Además, usted si tiene <option value="valueToSelect">...</option>, que puede hacer:

$('select').val("valueToSelect"); 

DEMO

+0

También funcionó $ ('# SelectCtrlId'). Val ('ValueToSelect'); – Sai

3

Con '' elemento Utilizamos generalmente el valor del atributo ''. Esto hará que sea más fácil de configurar a continuación:

$('select').val('option-value'); 
3

Prueba esto:

$('#mySelectElement option')[0].selected = true; 

Saludos!

6

utilizar el siguiente código si desea seleccionar una opción con un valor específico:

$('select>option[value="' + value + '"]').prop('selected', true); 
+0

$ ('select'). Val (valor); ¿Por qué tan serio? ;) – Zeeshan

+1

@Zee El código respondido permite múltiples selecciones también. – Azghanvi

9

lo haría de esta manera

$("#idElement").val('optionValue').trigger('change'); 
+1

esta debería ser la respuesta seleccionada –

+0

$ ("# idElement"). Val ('optionValue'). Change() también podría funcionar – Ullullu

2
Try with the below codes. All should work. 
    $('select').val(2); 
    $('select').prop('selectedIndex', 1); 
    $('select>option[value="5"]').prop('selected', true); 
    $('select>option:eq(3)').attr('selected', 'selected'); 
    $("select option:contains(COMMERCIAL)").attr('selected', true); 
Cuestiones relacionadas