2014-09-15 5 views
0

J'essaye d'obtenir la valeur de certains éléments et de les mettre dans une liste <select> dans <option> tag comme: Vérifiez si la radio a été vérifiée et laquelle radio est vérifiée prendre des valeurs d'éléments de section et les insérer avec split dans <select> comme <option>; Dans mon exemple, j'ai deux sections/panneaux qui peuvent être sélectionnés via une entrée radio. Mon problème est quand je fais la radio sélectionner parce que j'utiliser quelque chose comme:jQuery if/else instruction if if condition contient ou (||) deux variables

var scheduler = $("#first-radio:checked"); 
var cronos = $("#second-radio:checked"); 

$("#add-button").click(function() { 
    if (scheduler || cronos) { 
           alert('None of radio options were selected!'); 
    } else{ 
     alert("else where my code must run"); 
    } 
}); 

et devrait normalement prendre autre alerte si l'un des deux case à cocher sont sélectionnés lorsque le bouton Add val est pressé au lieu de prendre si déclaration tout le temps et montrer si alerte et je ne comprends pas pourquoi: |

Check fiddle:

Répondre

5

La méthode jQuery toujours revenir objet jQuery qui sera toujours truthy, de sorte que votre code exécutera toujours le bloc if.

L'état vérifié changera également pendant l'exécution. Vous ne pourrez donc pas utiliser un statut récupéré lors de l'initialisation du DOM. Vous devez vérifier l'état actuel des boutons radio dans le gestionnaire de clic.

var scheduler = $("#first-radio"); 
var cronos = $("#second-radio"); 

$("#add-button").click(function() { 
    if (scheduler.is(':checked') || cronos.is(':checked')) { 
     alert("else where my code must run"); 
    } else { 
     alert('None of radio options were selected!'); 
    } 
}); 

Démo: Fiddle

+0

Quelle est la différence entre $ ("# première radio: vérifié") et (scheduler.is (?: Vérifié) – BurebistaRuler

+1

$ (« # première radio: checked ") retournera un objet scheduler.is (': checked') retournera un booléen – wrxsti

+1

la chose est $ (SELECTOR) retourne toujours un objet jQuery même s'il n'est pas là donc votre condition if est toujours vraie. –