2010-12-10 19 views
0

J'ai un formulaire de test où mon bouton radio a du texte et de la valeur.La valeur du bouton radio vits jquery

Je suis en train de passer du texte de l'étiquette du bouton radio vérifié le nom du champ caché = forme [test]

ceci est ma fonction:

var levels = $('input[name="form[Button]"]:checked + label').map(function() { 
return $(this).text(); 
}).get(); 

$('input[name="form[test]"]').change(function() { 
($(this).val(levels)); 
}); 

HTML

<input type="radio" id="Button0" value="0" name="form[Button]"> 
<label for="Button0">This item is worth £0</label> 
<input type="radio" id="Button1" value="100" name="form[Button]"> 
<label for="Button0">This item is worth £100</label> 

<input type="hidden" value="" id="test" name="form[test]"> 

Mais mon changement de jQuery ne fonctionne tout simplement pas.

Merci beaucoup pour votre aide à l'avance!

Dom

Répondre

0
$('input[name="form[Button]"]').change(function() { 
    var level = $('input:radio[name="form[Button]"]:checked + label').text(); 
    $('input[name="form[test]"]').val(level); 
}); 

Et vous pouvez voir un live demo.

+0

texte de l'étiquette est peu susceptible de changer au fil du temps, alors pourquoi voulez-vous à plusieurs reprises la requête pour cela? – aefxx

+0

Celui-ci fonctionne parfaitement, merci! – Dom

0

Ce

$('input[name="form[test]"]').change(function() { 
($(this).val(levels)); 
}); 

signifie que vous voulez seulement changer la valeur de l'entrée cachée quand elle change déjà par une autre influence. Je pense que vous voulez dire:

var levels = $('input[name="form[Button]"]:checked + label').map(function() { 
    return $(this).text(); 
}).get(); 

$('input[name="form[test]"]').val(levels); 
1

Essayez cette façon:

$('input[name="form[Button]"]').each(function() { 
    $(this).data('label', $(this).next('label').text()); 
}); 

$('input[name="form[Button]"]').change(function() { 
    $('input[name="form[test]"]').val($(this).data('label')); 
});