2011-02-11 35 views

Respuesta

33

Una forma de hacerlo a la misma:

if ($('#myselect option').length == 0) { 
    $('#myselect').hide(); 
} 
5

var $select = $('input:select option'); 
if(!$select.length) 
    $select.attr('disabled', true); 

O:

$('select:not(:has(option))').attr('disabled', true); 
+2

El primero sería comprobar cuántos elementos seleccionados están en la página ... no es la cantidad de opciones que tienen. Y no creo que 'input: select' exista. Debería ser solo 'seleccionar'. –

+0

@FelixKling: ¡eso es lo que obtienes si olvidas una sola palabra! – jAndy

+0

El segundo trazador de líneas patea el culo. – Loktar

2
select:not(:has(option)) 

es el selector que estaría buscando. Se puede utilizar para encontrar las cajas de selección vacías, desactivarlos, y luego agregar una opción que dice "No hay ninguna opción disponible" o algo por el mensaje - de este modo:

var noOptions = $('<option/>').html('No options'); 
$('select:not(:has(option))').attr('disabled',true).append(noOptions); 

ejemplo vivo aquí: http://jsfiddle.net/f3myz/

1

si usted tiene la opción de vacío, entonces se puede:

#Allways you must have the empty option 
if ($("select#your_class").children().size() == 1) { 
    alert("Without options") 
    $("select#your_class").hide() 
} else { 
    alert("With options") 
    $("select#your_class").show() 
2

Otra manera de hacerlo es simplemente usar el jQuery tiene función

if ($('#myselect').has('option').length == 0) 
{ 
    // Hide and disable select input here 
} 

Para obtener información sobre el jQuery tiene función, véase: https://api.jquery.com/has/

Cuestiones relacionadas