Подсчет радиокнопок / текстовых полей: отмените выбор / пересчитайте, если пользователь изменяет мнение (Javascript / jquery / php)

У меня есть веб-форма php, с которой мне нужна помощь.

Эта часть формы использует JavaScript. При установке переключателей рядом с опциями сборы вносятся в соответствующие текстовые поля, и значения этих текстовых полей рассчитываются в текстовом поле Общая сумма.

Пользователь может выбрать только один язык за 75 долларов. У них также есть возможность выбрать соответствующий кредит для этого языка за 275 долларов.

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

Если человек передумает и выберет другой язык, другие переключатели из своего прежнего выбора должны быть отменены, а соответствующие текстовые поля оплаты должны быть очищены. Вот где у меня проблемы. Когда я изменяю выборки, форма не всегда очищает текстовые поля промежуточных итогов от предыдущего выбора, и она продолжает добавлять плату из предыдущего выбора в общий итог. (Общая сумма формы не должна превышать 307 долларов США.)

Я не являюсь опытным программистом, и я признаю, что код, который я использую, не самый актуальный / эффективный. Так как оригинальный javascript в этой форме был написан, jquery и php стали доминирующими. Эта форма использует смесь старой школы javascript, jquery и php. Я приветствую все возможные варианты решения этой задачи.

Поэтому я обращаюсь к этому сообществу с благодарностью за любое время, потраченное на то, чтобы помочь мне учиться.

http://jsfiddle.net/k5wL5vx6/

function total()
{

var total=0;
var reg=0;

if (window.document.registration.dutch_EENCx075_27745.checked) {
reg=reg+75; window.document.registration.dutch_EENCx075_27745_subtotal.value=75;
} else {window.document.registration.dutch_EENCx075_27745_subtotal.value = ""; }

if (window.document.registration.dutch_WLC110_27750.checked) {
window.document.registration.dutch_EENCx075_27745.checked = true;
reg=reg+232; window.document.registration.dutch_WLC110_27750_subtotal.value=232;
reg=reg+75; window.document.registration.dutch_EENCx075_27745_subtotal.value=75;
} else {window.document.registration.dutch_WLC110_27750_subtotal.value = "";}

if (window.document.registration.esl_EENCx075_27745.checked) {
reg=reg+75; window.document.registration.esl_EENCx075_27745_subtotal.value=75;
} else {window.document.registration.esl_EENCx075_27745_subtotal.value = ""; }

if (window.document.registration.esl_WLC110_27751.checked) {
window.document.registration.esl_EENCx075_27745.checked = true;
reg=reg+232; window.document.registration.esl_WLC110_27751_subtotal.value=232;
reg=reg+75; window.document.registration.esl_EENCx075_27745_subtotal.value=75;
} else {window.document.registration.esl_WLC110_27751_subtotal.value = ""; }

total = total + reg;

window.document.registration.amount1.value=total.toFixed(2);

}

0

Решение

Это работает, просто добавьте 1,2,3,4 к onClick (), как это onClick (1). Я также обновил ваш jsfiddle http://jsfiddle.net/9rqofbsc/

function total(button) {
if (button == 1) {
$("#dutch_EENCx075_27745").prop("checked", true);
$("#dutch_WLC110_27750").prop("checked", false);
$("#esl_EENCx075_27745").prop("checked", false);
$("#esl_WLC110_27751").prop("checked", false);
}
if(button == 2) {
$("#dutch_EENCx075_27745").prop("checked", true);
$("#dutch_WLC110_27750").prop("checked", true);
$("#esl_EENCx075_27745").prop("checked", false);
$("#esl_WLC110_27751").prop("checked", false);
}
if(button == 3) {
$("#dutch_EENCx075_27745").prop("checked", false);
$("#dutch_WLC110_27750").prop("checked", false);
$("#esl_EENCx075_27745").prop("checked", true);
$("#esl_WLC110_27751").prop("checked", false);
}
if(button == 4) {
$("#dutch_EENCx075_27745").prop("checked", false);
$("#dutch_WLC110_27750").prop("checked", false);
$("#esl_EENCx075_27745").prop("checked", true);
$("#esl_WLC110_27751").prop("checked", true);
}
var total = 0;
var reg = 0;

if ($('#dutch_EENCx075_27745').is(':checked')) {

reg = reg + 75;
window.document.registration.dutch_EENCx075_27745_subtotal.value = 75;
} else {
window.document.registration.dutch_EENCx075_27745_subtotal.value = "";
}

if ($('#dutch_WLC110_27750').is(':checked')) {

reg = reg + 232;
window.document.registration.dutch_WLC110_27750_subtotal.value = 232;
reg = reg + 75;
window.document.registration.dutch_EENCx075_27745_subtotal.value = 75;
} else {
window.document.registration.dutch_WLC110_27750_subtotal.value = "";
}

if ($('#esl_EENCx075_27745').is(':checked')) {

reg = reg + 75;
window.document.registration.esl_EENCx075_27745_subtotal.value = 75;
} else {
window.document.registration.esl_EENCx075_27745_subtotal.value = "";
}

if ($('#esl_WLC110_27751').is(':checked')) {

reg = reg + 232;
window.document.registration.esl_WLC110_27751_subtotal.value = 232;
reg = reg + 75;
window.document.registration.esl_EENCx075_27745_subtotal.value = 75;
} else {
window.document.registration.esl_WLC110_27751_subtotal.value = "";
}total = total + reg;

window.document.registration.amount1.value = total.toFixed(2); //display the grand total.

}
0

Другие решения

Других решений пока нет …