Без Javascript, нет - Определенно нет.
Анализ текста внутри промежутка рядом с каждым радио, используя Javascript, да - но довольно сложно
Добавление дополнительного атрибута к радио, содержащемусырое количество, используйте Javascript, да - не очень сложно
Добавляя дополнительный атрибут (предпочтительно data-amount
), используйте библиотеку, такую как jQuery, да - easy peasy lemon squeezy!
Пример использования вами jQuery.
Увеличение каждого из ваших радиомодулей:
<input class="radio" type="radio" name="keystage1yr1" value="Paper" data-price="25" /> <span>£25</span>
Добавьте общее поле наподобие:
<input id="total" type="text">
И используйте следующеекод.
var values = {}; // index to store the selection from each named group of radio's
$('input:radio').change(function(){
var name = $(this).attr('name');
values[name] = parseFloat($(this).data('price'));
var total = 0.0;
$.each(values,function(i,e){
total += e;
});
$('#total').val(total.toFixed(2));
});
Пример в реальном времени: http://jsfiddle.net/UL2JP/
Редактировать , приведенный выше код добавляет только те флажки, которые, к сожалению, установленыкэширует то, что было ранее выбрано в объекте javascript values
.Если с помощью кода вы сняли некоторые флажки, вам необходимо пересчитать то, что было выбрано.
Появится обновление этого кода, которое будет выполнять то, что вы описываете в своих комментариях:
var values = {};
$('input[name="keystage1save"]').click(function(){
$('input:radio:not([name="keystage1save"])').prop('checked',false);
values = {};
});
$('input:radio').change(function(){
var name = $(this).attr('name');
values[name] = parseFloat($(this).data('price'));
var total = 0.0;
$.each(values,function(i,e){
total += e;
});
$('#total').val(total.toFixed(2));
});
Пример из жизни: http://jsfiddle.net/UL2JP/1/
Редактировать 2 : просто мысль, что на самом деле нет необходимости кэшировать выбранные значения, было бы быстрее просто вычислить на лету:
$('input[name="keystage1save"]').click(function(){
$('input:radio:not([name="keystage1save"])').prop('checked',false);
});
$('input:radio').change(function(){
var total = 0.0;
$('input:radio:checked').each(function(){
total += parseFloat($(this).data('price'));
});
$('#total').val(total.toFixed(2));
});
Живой пример: http://jsfiddle.net/UL2JP/2/