#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. Код не протестирован