goods_cart.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /**
  2. * 删除购物车
  3. * @param cart_id
  4. */
  5. function drop_cart_item(cart_id){
  6. var parent_tr = $('#cart_item_' + cart_id).parent();
  7. var amount_span = $('#cart_totals');
  8. showDialog('确认删除吗?', 'confirm', '', function(){
  9. $.getJSON('index.php?act=cart&op=del&cart_id=' + cart_id, function(result){
  10. if(result.state){
  11. //删除成功
  12. if(result.quantity == 0){//判断购物车是否为空
  13. window.location.reload(); //刷新
  14. } else {
  15. $('tr[nc_group="'+cart_id+'"]').remove();//移除本商品或本套装
  16. if (parent_tr.children('tr').length == 2) {//只剩下店铺名头和店铺合计尾,则全部移除
  17. parent_tr.remove();
  18. }
  19. calc_cart_price();
  20. }
  21. }else{
  22. alert(result.msg);
  23. }
  24. });
  25. });
  26. }
  27. /**
  28. * 更改购物车数量
  29. * @param cart_id
  30. * @param input
  31. */
  32. function change_quantity(cart_id, input){
  33. var subtotal = $('#item' + cart_id + '_subtotal');
  34. //暂存为局部变量,否则如果用户输入过快有可能造成前后值不一致的问题
  35. var _value = input.value;
  36. $.getJSON('index.php?act=cart&op=update&cart_id=' + cart_id + '&quantity=' + _value, function(result){
  37. $(input).attr('changed', _value);
  38. if(result.state == 'true'){
  39. $('#item' + cart_id + '_price').html(number_format(result.goods_price,2));
  40. subtotal.html(number_format(result.subtotal,2));
  41. $('#cart_id'+cart_id).val(cart_id+'|'+_value);
  42. }
  43. if(result.state == 'invalid'){
  44. subtotal.html(0.00);
  45. $('#cart_id'+cart_id).remove();
  46. $('tr[nc_group="'+cart_id+'"]').addClass('item_disabled');
  47. $(input).parent().next().html('');
  48. $(input).parent().removeClass('ws0').html('已下架');
  49. showDialog(result.msg, 'error','','','','','','','','',2);
  50. return;
  51. }
  52. if(result.state == 'shortage'){
  53. $('#item' + cart_id + '_price').html(number_format(result.goods_price,2));
  54. $('#cart_id'+cart_id).val(cart_id+'|'+result.goods_num);
  55. $(input).val(result.goods_num);
  56. showDialog(result.msg, 'error','','','','','','','','',2);
  57. return;
  58. }
  59. if(result.state == '') {
  60. //更新失败
  61. showDialog(result.msg, 'error','','','','','','','','',2);
  62. $(input).val($(input).attr('changed'));
  63. }
  64. calc_cart_price();
  65. });
  66. }
  67. /**
  68. * 购物车减少商品数量
  69. * @param cart_id
  70. */
  71. function decrease_quantity(cart_id){
  72. var item = $('#input_item_' + cart_id);
  73. var orig = Number(item.val());
  74. if(orig > 1){
  75. item.val(orig - 1);
  76. item.keyup();
  77. }
  78. }
  79. /**
  80. * 购物车增加商品数量
  81. * @param cart_id
  82. */
  83. function add_quantity(cart_id){
  84. var item = $('#input_item_' + cart_id);
  85. var orig = Number(item.val());
  86. item.val(orig + 1);
  87. item.keyup();
  88. }
  89. /**
  90. * 购物车商品统计
  91. */
  92. function calc_cart_price() {
  93. //每个店铺商品价格小计
  94. obj = $('table[nc_type="table_cart"]');
  95. if(obj.children('tbody').length==0) return;
  96. //购物车已选择商品的总价格
  97. var allTotal = 0;
  98. obj.children('tbody').each(function(){
  99. //购物车每个店铺已选择商品的总价格
  100. var eachTotal = 0;
  101. $(this).find('em[nc_type="eachGoodsTotal"]').each(function(){
  102. if ($(this).parent().parent().find('input[type="checkbox"]').eq(0).attr('checked') != 'checked') return;
  103. eachTotal = eachTotal + parseFloat($(this).html());
  104. });
  105. allTotal += eachTotal;
  106. $(this).children('tr').last().find('em[nc_type="eachStoreTotal"]').eq(0).html(number_format(eachTotal,2));
  107. });
  108. $('#cartTotal').html(number_format(allTotal,2));
  109. }
  110. $(function(){
  111. calc_cart_price();
  112. $('#selectAll').on('click',function(){
  113. if ($(this).attr('checked')) {
  114. $('input[type="checkbox"]').attr('checked',true);
  115. $('input[type="checkbox"]:disabled').attr('checked',false);
  116. } else {
  117. $('input[type="checkbox"]').attr('checked',false);
  118. }
  119. calc_cart_price();
  120. });
  121. $('input[nc_type="eachGoodsCheckBox"]').on('click',function(){
  122. if (!$(this).attr('checked')) {
  123. $('#selectAll').attr('checked',false);
  124. }
  125. calc_cart_price();
  126. });
  127. $('#next_submit').on('click',function(){
  128. if ($(document).find('input[nc_type="eachGoodsCheckBox"]:checked').size() == 0) {
  129. showDialog('请选中要结算的商品', 'eror','','','','','','','','',2);
  130. return false;
  131. }else {
  132. $('#form_buy').submit();
  133. }
  134. });
  135. });