2015-09-01 3 views
0

Я работаю над интерактивным прайс-листом для моего друга. Она хочет прайс-лист, где клиент может проверить ее цены. Если клиент нажимает на несколько опций, цена автоматически рассчитывается. Существует два прейскуранта. Один для женщины и один для человека.
Это работает до сих пор.Расчет прайс-листа + скидки после 2/5 позиций

Проблема, которая возникает у меня: Когда я перехожу между Женщиной и Человеком, цена все еще находится в «общем» поле.
Но самая большая проблема для меня в том, что, когда клиент выбирает 2-4 варианта, он получает скидку 10% и 5 или более вариантов, он получает скидку 20%.

Здесь вы можете увидеть мои codepen

$(document).ready(function() { 
    $('ul.tabs li').click(function() { 
     var tab_id = $(this).attr('data-tab'); 

     $('ul.tabs li').removeClass('current'); 
     $('.tab-content').removeClass('current'); 

     $(this).addClass('current'); 
     $("#" + tab_id).addClass('current'); 

    }) 
}) 

$(function() { 
    $('input').click(function() { 

     var total = 0; 
     $('input:checked').each(function(index, item) { 
      total += parseFloat(item.value); 
     }); 
     $('.total').text(total); 
    }); 
}); 

$('#head_checkbox').on('change', function() { 
    if ($(this).is(':checked')) { 
     $('.person').attr('checked', true); 
    } else { 
     $('.person').attr('checked', false); 
    } 
}); 

$('.person').click(function() { 
    var total_length = $('.person').length; 
    var total_checked_length = $('.person:checked').length; 

    if (total_length == total_checked_length) { 
     $('#head_checkbox').attr('checked', true); 
    } else { 
     $('#head_checkbox').attr('checked', false); 
    } 
}); 

var checked = false; 
$('.all').click(function() { 
    e = $(this).attr('name'); 
    checked = !checked; 
    $('input[class=' + e).prop('checked', checked); 
}); 
+0

Для первой задачи, вы должны изменить 'входа: checked' селектор включать только входы в активной вкладке. – Barmar

+0

Он получает скидку на 2-3 варианта, 5 опций, но не 4? – Barmar

+0

О, конечно, также для 4. – Nerdkowski

ответ

0

затруднительные для «общего», поданных на разных вкладках:

$(document).ready(function() { 
     tab_1_total = 0; 
     tab_2_total = 0; 
     tab_id = ""; 
     $('ul.tabs li').click(function() { 
       tab_id = $(this).attr('data-tab'); 

       $('ul.tabs li').removeClass('current'); 
       $('.tab-content').removeClass('current'); 

       $(this).addClass('current'); 
       $("#" + tab_id).addClass('current'); 

       if(tab_id == "tab-1") { 
        $('.total').text(tab_1_total); 
       } 

       else if(tab_id == "tab-2") { 
        $('.total').text(tab_2_total); 
       } 
     }) 
}) 

$(function() { 
     $('input').click(function() { 

       var total = 0; 
       var option_count = 0; 

       $('.tab-content.current input:checked').each(function(index, item) { 
         total += parseFloat(item.value); 
         option_count++; 
       }); 
       // Apply multiple product discount 
       if (option_count >= 5) { 
         total *= .80; 
       } else if (option_count >= 2) { 
         total *= .90; 
       } 

       total = total.toFixed(2); 
       $('.total').text(total); 

       if(tab_id == "tab-1") { 
        tab_1_total = total; 
       } 

       else if(tab_id == "tab-2") { 
        tab_2_total = total;      
       } 

     }); 
}); 

$('#head_checkbox').on('change', function() { 
     if ($(this).is(':checked')) { 
       $('.person').attr('checked', true); 
     } else { 
       $('.person').attr('checked', false); 
     } 
}); 

$('.person').click(function() { 
     var total_length = $('.person').length; 
     var total_checked_length = $('.person:checked').length; 

     if (total_length == total_checked_length) { 
       $('#head_checkbox').attr('checked', true); 
     } else { 
       $('#head_checkbox').attr('checked', false); 
     } 
}); 
1

1) Изменение селектора входов только спичечных в текущей вкладке.

2) Подсчитайте количество проверенных опций и примените скидку к общей сумме, когда вы закончите.

$(function() { 
    $('input').click(function() { 

     var total = 0; 
     var option_count = 0; 
     $('.tab-content.current input:checked').each(function(index, item) { 
      total += parseFloat(item.value); 
      option_count++; 
     }); 
     // Apply multiple product discount 
     if (option_count >= 5) { 
      total *= .80; 
     } else if (option_count >= 2) { 
      total *= .90; 
     } 
     $('.total').text(total); 
    }); 
}); 
+0

Можно ли ограничить цифры после запятой до 2? – Nerdkowski

+0

'total.toFixed (2)' – Barmar

Смежные вопросы