2010-12-10 6 views
0

Ich habe ein Testformular, wo mein Radiobutton Text und Wert haben.Radioknopf Wert vits jquery

Ich versuche, Text von Etikett, um von überprüft Optionsfeld versteckt Feld name = form [Test]

dies ist meine Funktion:

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]"> 

Aber meine Änderung in jQuery funktioniert einfach nicht.

Vielen Dank für Ihre Hilfe im Voraus!

Dom

Antwort

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

Und Sie können eine live demo sehen.

+0

Der Text des Etiketts nicht wahrscheinlich ist, im Laufe der Zeit ändern, dann warum sollte man immer wieder Abfrage für sie? – aefxx

+0

Dieser funktioniert perfekt, Danke! – Dom

0

Diese

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

bedeutet, dass Sie nur den Wert des verborgenen Eingang ändern möchten, wenn es bereits durch einen anderen Einfluss ändert. Ich glaube, Sie bedeuten:

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

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

Probieren Sie es auf diese Weise:

$('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')); 
});