Как я могу получить итоговые значения для нескольких радиоприемников при выборе с помощью javascript?

#javascript #forms #radio-button

#javascript #формы #переключатель

Вопрос:

У меня есть переключатели и группы, созданные динамически, и их значения являются числовыми. В каждой группе есть 5 переключателей, все в диапазоне значений. Итак, при нажатии любого переключателя я бы хотел, чтобы значение добавлялось к итогу в текстовом поле, а когда новый переключатель в группе отменен, старое значение следует вычесть, а новое значение добавить.

Может ли кто-нибудь указать мне правильное направление или поделиться каким-нибудь кодом, если он у вас есть? Спасибо!

Комментарии:

1. Хотите поделиться каким-нибудь кодом? Нравится динамически созданный HTML?

Ответ №1:

Вместо того, чтобы вычитать старое значение и добавлять новое значение, я бы просто пересчитывал итоговое значение каждый раз. Таким образом, вам не нужно беспокоиться об отслеживании старого значения для каждой группы. Вы можете использовать jQuery для упрощения, но в обычном JavaScript сработало бы что-то вроде следующего, чтобы просто перебирать все переключатели и добавлять значения тех, которые в данный момент проверены:

 function calculateTotal() {
   var x = document.getElementsByTagName("input");
   var i,
       total = 0;
   for(i=0; i < x.length; i  ){
       if (x[i].type == "radio" amp;amp; x[i].checked)
          total  = parseInt(x[i].value,10);
   }
   // display total somewhere;
}
  

Либо установите onclick обработчик для вызова каждой радиокнопки calculateTotal , либо установите один onclick в каком-либо родительском контейнере.

Ответ №2:

jQuery — это короткий ответ. Вы можете найти множество примеров в Google и на jquery.com. Привяжитесь к событию нажатия radiobutton, а затем сделайте то, что вы должны сделать.

Ответ №3:

что-то вроде этого http://jsfiddle.net/robx/KXEmW Я привел простой пример простого добавления нового значения. Итак, вам просто нужно выполнить математические вычисления, чтобы добавить / вычесть, что и когда.

Ответ №4:

Используя jQuery, если у вас есть html, подобный этому:

 <form id="form1">
  <input type="radio" name="chk" value="1">
  <input type="radio" name="chk" value="2">
  <input type="radio" name="chk" value="3">
</form>
<form id="form2">
  <input type="radio" name="chk" value="1">
  <input type="radio" name="chk" value="2">
  <input type="radio" name="chk" value="3">
</form> ...
  

и где-то у вас есть…

 <input type="text" name="total" value="">
  

jQuery для вычисления общей суммы будет выглядеть:

 var form1Val = parseInt($('#form1 input[name$=chk]').val());
var form2Val = parseInt($('#form2 input[name$=chk]').val());
var total = form1Val   form2Val   ...;
$('input[name$=total]').val(total);
  

Вы, конечно, можете выполнить цикл для каждой формы, а затем суммировать их позже.

P.S. Код не протестирован