2010-08-20 4 views
1

J'effectue une sélection sur divers boutons radio dont la classe commence par le nom radio-sélection et a un certain nombre à la fin (par exemple radio-bouton1, radio-bouton2, etc.). Si le bouton radio est cliqué, certains champs contenus avec ce bouton radio doivent être activés ou désactivés. La bonne partie est que la classe du qui doit être activée correspond au bouton radio # (par exemple radio-option1, radio-option2, etc.).Comment analyser un nombre dans la sélection jQuery?

Jusqu'à présent, je ... ce

$('input:radio[class^=radio-selection]').live('click', function() { 
    enableDataGroup($(this).siblings('.radio-option1')); 
    disableDataGroup($(this).siblings('.radio-option2')); 
}); 

Je voulais juste prouver activation et la désactivation des œuvres (ce sont mes propres fonctions comme activer et désactiver peut devenir un peu compliqué), mais maintenant je besoin d'analyser en quelque sorte la valeur numérique du bouton radio cliqué et activer ce groupe de données, et désactiver tous les autres qui ne correspondent pas. Voici le pseudo-code pour ce que je veux faire. Malheureusement, je ne sais pas quoi chercher dans Google qui va m'apprendre comment analyser et ajouter ces valeurs numériques.

$('input:radio[class^=radio-selection]').live('click', function() { 
    var i = // Parse off the number off the selector of $(this). 
    enableDataGroup($(this).siblings('.radio-option' + i)); 
    // Disable every other .radio-option[X] where [X] != i 
}); 

Répondre

1

Il est généralement plus facile d'appliquer une action groupée à tout d'abord, puis d'activer celle que vous voulez vraiment activer.

$('input:radio[class^=radio-selection]').live('click', function() { 

    // Disable all controls first by the class 
    $('input:radio[class^=radio-option]').attr('disabled', 'disabled'); 

    // Replace the class text with nothing to get your integer 
    var i = parseInt($(this).attr("class").replace("radio-selection", "")); 
    enableDataGroup($(this).siblings('.radio-option' + i)); 

}); 
+0

Cela me met sur la bonne voie. Il y a une erreur dans votre code (je l'ai édité). En outre, j'ai des problèmes avec les sélecteurs. La classe div.radio-option [#] n'est pas la seule classe sur la div. Donc quand j'utilise le [class^= radio-selection], je récupère un ensemble vide. Aucun moyen de réparer cela? – JasCav

Questions connexes