2012-07-21 4 views
0

Étant donné un ensemble de boutons radio, comme:Être vérifié auparavant Bouton Radio

<input id="B_1" type="radio" name="radioName" value="1"> 
<input id="B_2" type="radio" name="radioName" value="2"> 
<input id="B_3" type="radio" name="radioName" value="3"> 
<input id="B_4" type="radio" name="radioName" value="4"> 

Lorsque l'un d'eux est vérifié est-il possible de savoir qui était précédemment actif (s'il y en a un)?

J'ai essayé de joindre la fonction suivante à l'événement onclick, mais il ne fonctionne pas parce qu'il renvoie le bouton radio actuellement sélectionné au lieu de celui qui a été sélectionné avant:

my_func = function() { 
    var checkedValue = $('input[type=radio]:checked').val(); 
    return alert("The previously selected was: " + checkedValue); 
    }; 

Je don sais pas si on pouvait être d'aucune aide, est de toute façon ici la tentative complète: http://jsfiddle.net/H6h4R/

+0

Vous devez repenser ici. Chaque fois que vous cliquez sur une nouvelle radio, checkValue se remplit simplement avec celui sur lequel vous cliquez. –

Répondre

5

Essayez ceci - http://jsfiddle.net/H6h4R/1/

$(":radio").on("mousedown", function() { 
    $("p").text($('input[type=radio]:checked').val()); 
}).on("mouseup", function() { 
    $('input[type=radio]').prop('checked', false); 
    $(this).prop('checked', true); 
}); 

L'événement click est seulement déclenché après cette série d'événements précis:

  • Le bouton de la souris est enfoncé alors que le pointeur se trouve à l'intérieur de l'élément.
  • Le bouton de la souris est relâché alors que le pointeur est à l'intérieur de l'élément. s'il utilise la clé du clavier
+0

Intéressant! Avec l'événement 'mouse *' il est maintenant possible d'accéder à la situation du bouton avant de changer la sélection :) Bien que cliquer sur l'étiquette ne marche plus .. Je vais devoir par la suite personnaliser les boutons ça pourrait être un problème? –

+2

non, il ne devrait pas être un problème .. Mais vous devez attacher les mêmes auditeurs à vos étiquettes ainsi pour le faire fonctionner - http://jsfiddle.net/H6h4R/2/ –

+0

Great! Merci beaucoup pour les exemples et l'explication, vous m'avez vraiment aidé! –

0

cela peut aider avec cette

http://jsfiddle.net/DYrW3/73/

$('input[name=radios]').keydown(function(){ 
     alert("Before change "+$('input[name=radios]:checked').val()); 
}) 
Questions connexes