web-dev-qa-db-fra.com

Comment vérifier si une case de sélection est vide à l'aide de JQuery / Javascript

En utilisant JQuery Mobile, j'ai une boîte de sélection qui est remplie dynamiquement à partir d'une base de données. À l'heure actuelle, la population de cette case à cocher fonctionne parfaitement. J'ai ajouté une fonctionnalité qui consiste en un bouton qui appelle une fonction via un événement "sur clic". Le travail de cette fonction est de savoir si cette case à cocher particulière a été remplie ou non; s'il ne l'a pas fait, il ne fera tout simplement rien, mais sinon, il fonctionnera sans problème. Mon problème est de déterminer si cette case de sélection est vide ou non.

Voici un exemple très simplifié de ce que je traite:

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

Ma fonction, qui est appelée à partir d'un bouton séparé, ressemble à ceci:

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
    }
}

Ne vous inquiétez pas de ce que cela fait et comment il le fait. À l'heure actuelle, ce qui m'importe, c'est que je ne peux pas vérifier si la case est vide ou non, je ne sais pas comment m'y prendre. J'ai beaucoup lu sur les forums et la documentation, mais cela a de nombreuses implications car cela dépend de l'implémentation elle-même.

Par exemple, l'utilisation de document.getElementById(...)... ne retournera pas nécessairement false et cela dépend de la façon dont vous l'utilisez. L'utilisation de $("#someID")... dans jQuery peut également produire ou non les résultats souhaités. J'ai déjà essayé de nombreuses fois, comme vous pouvez le voir dans les lignes commentées, qui peuvent toutes être évaluées dans l'instruction if(...).

Avez-vous des suggestions ou des idées sur la façon d'y parvenir? Merci d'avance!

28
AGE

Pour vérifier si la case de sélection a des valeurs:

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

Pour vérifier si la valeur sélectionnée est vide:

if( !$('#fruit_name').val() ) { 
79
Engineer

Une bonne façon d'obtenir la valeur sélectionnée serait

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

Et puis tu devrais faire

if(selected_value) { ... }
12
Claudio Redi

Une autre façon correcte d'obtenir la valeur sélectionnée serait d'utiliser ce sélecteur:

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

Le meilleur pour toi!

2
gmpacheco