2012-06-14 16 views
21

Uso de JQuery Mobile Tengo un cuadro de selección que se rellena dinámicamente desde una base de datos. A partir de ahora, la población de esta casilla de verificación funciona sin problemas. He agregado la funcionalidad que consiste en un botón que llama a una función a través de un evento 'al hacer clic'. El trabajo de esta función es saber si esta casilla de verificación particular se ha rellenado o no; si no lo ha hecho, simplemente no hará nada, pero de lo contrario funcionará sin problemas. Mi problema es determinar si esta casilla de selección está vacía o no.Cómo comprobar si un cuadro de selección está vacío usando JQuery/Javascript

Aquí es un ejemplo muy simplificada de lo que estoy tratando con:

<li> 
    <label for="fruit_name">Fruit</label> 
    <select name="some_fruit" id="fruit_name" onclick="populate_box('fruit', this);"> 
    </select> 
</li> 

Mi función, que se llama desde un botón independiente, tiene el siguiente aspecto:

function isSelextBoxEmpty(selectBoxId) { 
    var selected_value = $('#fruit_name'); 

    /* More options... still testing the proper way: 
    var selected_value = $('#fruit_name').text; 
    var selected_value = $('#fruit_name').value; 
    var selected_value = $('#fruit_name').length; 
    var selected_value = $('#fruit_name option:selected', this); 
    var selected_value = document.getElementById('fruit_name'); 
    var selected_value = document.getElementById('fruit_name').length; 
    var selected_value = document.getElementById('fruit_name').value; 
    var selected_value = document.getElementById('fruit_name').innerHTML; 
    */ 

    if(selected_value) { 
     alert("NOT null, value: " + selected_value); 
     //do something 
    } 
    else { 
     alert("null, value: " + selected_value); 
     //do something 
    } 
} 

No se preocupe sobre lo que hace y cómo lo hace. En este momento, lo que me importa es que no puedo verificar si la casilla de verificación está vacía o no. No estoy seguro de cómo hacerlo. He leído mucho a través de foros y documentación, pero hay muchas implicaciones al hacer esto, ya que depende de la implementación en sí.

Por ejemplo, usando document.getElementById(...)... no necesariamente devolverá falso y depende de cómo lo use. También utilizando $("#someID")... en jQuery puede o no producir los resultados deseados. Ya he intentado muchas veces diferentes como puede ver en las líneas comentadas, todas las cuales se pueden evaluar en la declaración if(...).

¿Tiene alguna sugerencia o idea sobre cómo lograr esto? ¡Gracias por adelantado!

Respuesta

53

Para comprobar si el cuadro de selección tiene ningún valor:

if($('#fruit_name').has('option').length > 0) { 

Para comprobar si el valor seleccionado está vacío:

if(!$('#fruit_name').val()) { 
+1

Le concedí la respuesta porque lo consiguió justo antes de Claudio, pero en realidad Claudio también lo hizo unos segundos después ... ¡GRACIAS a los dos! Desearía poder dividir la recompensa. – AGE

+0

Este último código no es correcto. De hecho, si lo intenta con un cuadro de selección, recibirá nulo como val(), pero @if (! $ ('# Fruit_name'). Val()) @ devuelve TRUE. – sentenza

+0

Bueno, estoy tratando de quitarme mi voto negativo porque esto es correcto, pero stackoverflow no me lo permite. Bastante cojo. Lo siento por el downvote, debería ser un voto favorable. – gregblass

10

Una forma correcta de ser seleccionado valor sería

var selected_value = $('#fruit_name').val() 

Y entonces usted debe hacer

if(selected_value) { ... } 
2

Otra forma correcta para obtener el valor seleccionado sería utilizar este selector:

$("option[value="0"]:selected") 

mejor para usted!

Cuestiones relacionadas