2011-05-04 16 views
5

Quiero cambiar si un usuario puede seleccionar solo, una o varias opciones en un cuadro de selección basado en una casilla de verificación de arriba. es decir, si la casilla de verificación está marcada, el usuario puede seleccionar múltiples valores, si no están marcados, solo pueden seleccionar un valor. ¿Cuál es la mejor manera de hacer esto usando jquery?Jquery agregar/eliminar múltiples atributos en seleccionar

+1

Adjunte un oyente de cambio a la casilla de verificación y edite el atributo 'múltiple' de la selección. –

Respuesta

3
$("#theCheckbox").change(function() { 
    $("#theSelect").attr("multiple", (this.checked) ? "multiple" : ""); 
}).change(); 

You can try it here.

+1

Esto solo funciona con jQuery 1.5.2 –

2
$('#checkboxid').change(function(){ 

    if ($(this).is(':checked')) 
    { 
     $('#listbox').attr('multiple','multiple'); 
    } 
    else 
    { 
     $('#listbox').removeAttr('multiple'); 
    } 
}) 

Demostración: http://jsfiddle.net/ynhat/WCPue/1/

5

Para establecer nuevos prop jQuery en lugar de attr funciona:

http://jsfiddle.net/DdhSF/267/

$("#theCheckbox").change(function() { 
    $("#theSelect").prop("multiple", (this.checked) ? "multiple" : ""); 
}).change(); 
+1

¿Por qué funciona esto y por qué funciona como funciona? Es decir, cuando se marca la casilla, ¿por qué el elemento 'select'' '? ¿Por qué el ajuste 'multiple' a la cadena vacía lo elimina? No puedo encontrar nada en la documentación para explicar este comportamiento. – Paul

+0

Buena pregunta, no tengo tiempo para investigarlo. Es molesto cómo estas sencillas tareas básicas pueden ser un PITA –

+0

prop (attr, value) debe usarse con valor booleano, no con cadena, por lo que "múltiple" funciona como verdadero y "" funciona como falso, http://jsfiddle.net/ DdhSF/269 / –

Cuestiones relacionadas