Всего радио кнопок - PullRequest
       2

Всего радио кнопок

0 голосов
/ 11 января 2012

Хорошо, теперь у меня есть форма, которая позволяет пользователям выбирать определенные радиокнопки, но если определенные радиокнопки выбраны, другие не могут.

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

Проблема, с которой я сталкиваюсь, заключается в том, что внизу формы есть раздел Order Total (excluding VAT):, который суммирует общее количество переключателей.Проблема, например, если вы отметите переключатель слева вверху (25 фунтов стерлингов за 1 год для всех блоков и блоков (всего 15 оценок)) Затем в разделе Order Total (excluding VAT): в общей сумме отображается 25 фунтов стерлингов.Затем, если вы отметите переключатель ниже, это 47,50 фунтов стерлингов, общая сумма говорит 47,50 фунтов стерлингов, что все в порядке.Но затем скажите, что пользователь передумал и вернулся к варианту 25 фунтов стерлингов, он сохраняет 47,50 фунтов стерлингов и добавляет 25 фунтов стерлингов сверху, поэтому он говорит 72,50 фунтов стерлингов, тогда как он должен быть всего лишь 25 фунтов стерлингов.Вы можете видеть, что цены на радиокнопки установлены на data-price="25"

Так что мой вопрос, просматривая код, возможно ли в сумме добавить только радиокнопки, которые отмечены?

Я думаю, что это связано с кэшированием того, что было выбрано ранее, и с этим кодом?

$('input:radio').change(function(){
    var total = 0.0;
    $('input:radio:checked').each(function(){
        total += parseFloat($(this).data('price'));
    });
    $('#total').val(total.toFixed(2));
});

1 Ответ

0 голосов
/ 12 января 2012

Проблема связана с порядком исполнения.

У вас есть три набора обработчиков событий, установленных с помощью jQuery.on (), jQuery.click () и jQuery.change (). Я не хотел бы догадываться, какой порядок запускают эти события, и вполне вероятно, что порядок отличается от браузера к браузеру.

Следовательно, обработчик суммирования может запускаться раньше других обработчиков, и это то, что, похоже, происходит.

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

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