cart.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. $(function () {
  2. // 购物车刷新事件
  3. $(document).on("shop.event.refresh", ".table-cart", function () {
  4. $(".cart-selected-nums").text($("input[name='ids[]']:checked").length);
  5. var amount = 0;
  6. $("input[name='ids[]']:checked", this).each(function () {
  7. amount += (parseFloat($(this).closest("tr").data("price")) * parseInt($(this).closest("tr").find("input[name=quantity]").val()));
  8. });
  9. $(".cart-selected-amount", this).text(amount.toFixed(2));
  10. });
  11. // 选中全部
  12. $(document).on("click", ".checkall", function () {
  13. $("input[name='ids[]']").prop("checked", $(this).prop("checked"));
  14. $(".checkall").not(this).prop("checked", $(this).prop("checked"));
  15. $(".table-cart > tbody > tr").toggleClass("active", $(this).prop("checked"));
  16. $(".table-cart").trigger("shop.event.refresh");
  17. });
  18. //手动变更数量
  19. $(document).on("change", ".quantity input", function () {
  20. var input = $(this);
  21. var value = parseFloat($(this).val());
  22. var tr = $(this).closest("tr");
  23. SHOP.api.ajax({
  24. url: "/addons/shop/cart/set_nums",
  25. data: {id: tr.data("id"), nums: value}
  26. }, function (data, ret) {
  27. input.val(value);
  28. tr.find(".cart-item-subtotal").text(value * parseFloat(tr.data("price")));
  29. if (!$("input[name='ids[]']", tr).prop("checked")) {
  30. $("input[name='ids[]']", tr).prop("checked", true);
  31. tr.addClass("active");
  32. }
  33. $(".table-cart").trigger("shop.event.refresh");
  34. layer.msg(ret.msg);
  35. return false;
  36. });
  37. });
  38. // 增减数量
  39. $(document).on("click", ".quantity > div", function () {
  40. var input = $(this).siblings("input");
  41. var value = parseInt(input.val());
  42. var max = input.attr("max");
  43. var min = input.attr("min");
  44. var stocks = parseInt(input.data("stocks"));
  45. value = $(this).text() == '-' ? value - 1 : value + 1;
  46. if (value >= stocks) {
  47. layer.msg("最多可以购买" + stocks + "件");
  48. return;
  49. }
  50. value = min != '' ? Math.max(min, value) : value;
  51. value = max != '' ? Math.min(max, value) : value;
  52. var tr = $(this).closest("tr");
  53. if (tr.length == 0) {
  54. return;
  55. }
  56. SHOP.api.ajax({
  57. url: "/addons/shop/cart/set_nums",
  58. data: {id: tr.data("id"), nums: value}
  59. }, function (data, ret) {
  60. input.val(value);
  61. var subtotal = value * parseFloat(tr.data("price"));
  62. tr.find(".cart-item-subtotal").text(subtotal.toFixed(2));
  63. if (!$("input[name='ids[]']", tr).prop("checked")) {
  64. $("input[name='ids[]']", tr).prop("checked", true);
  65. tr.addClass("active");
  66. }
  67. $(".table-cart").trigger("shop.event.refresh");
  68. layer.msg(ret.msg);
  69. return false;
  70. });
  71. });
  72. // 删除选中
  73. $(document).on("click", ".btn-delete-selected", function () {
  74. layer.confirm("确认删除所选择的商品?", function () {
  75. var ids = [];
  76. $("input[name='ids[]']:checked").each(function () {
  77. ids.push($(this).val());
  78. });
  79. if (ids.length == 0) {
  80. layer.msg('请选择需要删除的商品');
  81. return false;
  82. }
  83. SHOP.api.ajax({
  84. url: "/addons/shop/cart/del",
  85. data: {id: ids}
  86. }, function (data, ret) {
  87. $("input[name='ids[]']:checked").each(function () {
  88. $(this).closest("tr").remove();
  89. });
  90. $(".table-cart").trigger("shop.event.refresh");
  91. layer.closeAll();
  92. layer.msg(ret.msg);
  93. return false;
  94. });
  95. });
  96. });
  97. //删除单个
  98. $(document).on("click", ".btn-delete", function () {
  99. var that = this;
  100. SHOP.api.ajax({
  101. url: "/addons/shop/cart/del",
  102. data: {id: $(this).data("id")}
  103. }, function (data, ret) {
  104. $(that).closest("tr").remove();
  105. $(".table-cart").trigger("shop.event.refresh");
  106. layer.msg(ret.msg);
  107. return false;
  108. });
  109. });
  110. // 选中复选框
  111. $(document).on("click", "input[name='ids[]']", function () {
  112. $(this).closest("tr").toggleClass("active", $(this).prop("checked"));
  113. $(".table-cart").trigger("shop.event.refresh");
  114. });
  115. $(document).on("submit", "#cart-form", function () {
  116. var ids = [];
  117. $("input[name='ids[]']:checked", this).each(function () {
  118. ids.push($(this).val());
  119. });
  120. if (ids.length == 0) {
  121. layer.msg('请选择需要结算的商品');
  122. return false;
  123. }
  124. });
  125. });