最近在时间很忙,在弄一个B2B商城,运用到的easyUI【后台系统】+javaWEB(maven)+JQuery【前台系统】+Scss+JavaScript+其他框架(sea.js模块化等),我负责前端这块:后期的重要的前端代码,都会发布出来

1、60s短信验证码发送code:

  1. //60s无效 forget 要引用的话,后期如果,jquey代码庞大的话,就考虑在封装的基础上,在进行封装、压缩精简代码。
  2. $('.forget span.btn-small').on('click',function(){
  3. !$(this).hasClass('btn-gray') && sendCode($(this),60);
  4. });
  5.  
  6. //发送验证码方法封装
  7. function sendCode(obj,cur){
  8. clearInterval(obj.timer);
  9. obj.timer=setInterval(function(){
  10. if(cur>0) {
  11. obj.addClass('btn-gray').html('(' + (cur--)+ 's后获取)');
  12. }else{
  13. clearInterval(obj.timer);
  14. obj.removeClass('btn-gray').html('获取验证码');
  15. }
  16. },1000);
  17. }

验证码

2、购物车数量、金额、统计

  1. //计算每行的小计金额
  2. function lineMoney(oCur){
  3. var $oCur=oCur.parents('.order-tr'); //当前单击的选中行
  4. var cNum=parseInt($oCur.find('.key-3 input').val());
  5. var cCoupon=Math.abs(parseFloat($oCur.find('.key-4 div').text()));
  6. var cPrice=parseFloat($oCur.find('.key-2 em').text());
  7. var cLineMoney=(cPrice-cCoupon)*cNum;
  8. toFix(cLineMoney+'', $oCur.find('.key-5'), 'em');
  9. }
  10.  
  11. //统计:应付款、总优费 pObj当前对象----->对应的就是选中的那一行
  12. function moneyCount(pObj){
  13. //单击选中店铺下的所有商品 优费金额:x_total,,,,,应付金额:z_total
  14. var x_total=0,z_total=0;
  15. var $$oo=pObj.parents('.order-note-border').find('.order-tr :checked');
  16. $.each($$oo, function(inx, obj) { //遍历所有已选中的商品,并累计价格
  17. var $cur=$(obj).parents('.order-tr');
  18. var iNum=parseInt($cur.find('.key-3 input').val());
  19. var iCoupon=Math.abs(parseFloat($cur.find('.key-4 div').text()));
  20. x_total+=iCoupon*iNum;
  21. z_total+=parseFloat($cur.find('.key-5 em').text());
  22. });
  23. toFix('-'+x_total,$('li.pdu-money'),'em','¥');
  24. toFix(''+z_total,$('li.go-wind'),'em','¥');
  25. }
  26.  
  27. //购买件数
  28. function buy_Num(pClass,fClass){
  29. var buy=0;
  30. $(pClass).each(function(inx, ele){
  31. if(!$(this).hasClass(fClass)) {
  32. buy+=$(this).find('input[type="checkbox"]').filter(':checked').size();
  33. }
  34. });
  35. $('.pdu-select em').text(buy);
  36. buy>0?$('.cart-count a').removeClass('gen-dis'):$('.cart-count a').addClass('gen-dis');
  37. }
  38.  
  39. //固定金额小数后2位toFix() str格式的字符串 pObj父对象 sClass:指定输出的位置上的selector ---> class要带上'.'
  40. function toFix(str,pObj,sClass,$){
  41. var dInx=str.indexOf('.');
  42. var $$=$||'';
  43. if(dInx>0)
  44. if(str.charAt(dInx+1) && str.charAt(dInx+2)) {
  45. pObj.find(sClass).text($$+str.substring(0,dInx+3));
  46. } else {
  47. pObj.find(sClass).text($$+str.substring(0,dInx+3)+'0');
  48. }
  49. else {
  50. pObj.find(sClass).text($$+str+'.00');
  51. }
  52. }

购物车统计金额、数目

3、静态化模板artTemplate(传说中性能很有优势的一个模板化,此商城自然少不了这个东西引入,,,呵呵!!!)

  1. <!----//店铺--------->
  2. <script id="submitOrders_ShopsTpl" type="text/html">
  3. <div class="order-note">
  4. <div class="note-tit">
  5. <span>{{bUserSellerName}}</span>
  6. <i class="order-em">满10020</i>
  7. <div class="ps-ipt"><input type="text" placeholder="备注"></div>
  8. </div>
  9. <div class="order-details">
  10. <div class="order-tbody">
  11. <!--具体商品列表----->
  12. </div>
  13. <div class="order-ifs">
  14. <div class="order-stat">
  15. <div class="other-count">
  16. <div class="other-sel">
  17. <span>配送方式:</span>
  18. <span><a href="javascript:;" class="font-on">包邮</a></span>
  19. </div>
  20. <div class="other-doller">
  21. <ul>
  22. <li>
  23. <span>运费:</span>
  24. <span><em>0.00</em></span>
  25. <span>元</span>
  26. </li>
  27. <li>
  28. <span>优惠:</span>
  29. <span><em>200.00</em></span>
  30. <span>元</span>
  31. </li>
  32. </ul>
  33. </div>
  34. </div>
  35. <div class="order-counts">
  36. <span>小计:</span>
  37. <span><em>40006.10</em></span>
  38. <span>元</span>
  39. </div>
  40. </div>
  41. </div>
  42. </div>
  43. </div>
  44. </script>
  45. <!----//店铺下已选购的商品--------->
  46. <script type="text/html" id="shopListTpl">
  47. <div class="order-tr">
  48. <div class="key-0">
  49. <div class="order-pic">
  50. <img src="img/pdu/b1.jpg" alt="{{skuName}}">
  51. </div>
  52. <div class="order-describe">
  53. {{skuName}}
  54. <div class="order-em">{{skuCommodity_price}}</div>
  55. </div>
  56. </div>
  57. <div class="key-1">
  58. <div>
  59. <span>1段</span>
  60. <span>800g</span>
  61. </div>
  62. </div>
  63. <div class="key-2">
  64. <div>
  65. <s>{{skuCommodity_price}}</s>
  66. <div>
  67. <em>{{skuCommodity_price}}</em>
  68. </div>
  69. </div>
  70. </div>
  71. <div class="key-3">
  72. <div>{{skuCommodity_surplus_count}}</div>
  73. </div>
  74. <div class="key-4">
  75. <div>
  76. -20.00
  77. </div>
  78. </div>
  79. <div class="key-5">
  80. <div>
  81. <em>{{skuCommodity_price}}</em>
  82. </div>
  83. </div>
  84. </div>
  85. </script>
  86. <script>
  87. $(function(){
  88. $.ajax({
  89. url: "json/subOrder.json",
  90. //data:params或者data, /***async:是否同步 datatype:数据类型*******/
  91. async:false,
  92. dataType:"json",
  93. beforeSend:function(){},
  94. success: function(data){ //此data---->json的整个的数据data
  95. if(data.code == 100){
  96. if(data.content.rows){
  97. for(var i = 0; i < data.content.rows.length; i++){
  98. //具体行------>父节点数据
  99. var fatherData = data.content.rows[i];
  100. var fatherShopNameTpl = $(template('submitOrders_ShopsTpl', fatherData)); //将fatherData数据渲染到template中
  101. var sonList = fatherData.userList; //得到相应店铺下已选购的商品list数组列表
  102. var sonLength = sonList.length; //此处定义一个临时变量存储商品列表的长度,为防止重复访问变量,而做此步
  103. for(var j = 0; j< sonLength; j++){ //遍历每一个list
  104. var sonData = sonList[j]; //要是一个数组:sonData
  105. var sonShopsTpl = $(template('shopListTpl', sonData)); //渲染店铺下对应的数据到商品template中
  106. fatherShopNameTpl.find(".order-tbody").append(sonShopsTpl); //添加子到父,---->对应到商品添加到相应店铺中
  107. }
  108. $(".order-note-border").append(fatherShopNameTpl); //最后添加所有的数据到页面里
  109. }
  110. }
  111. }
  112. },
  113. error:function(){}
  114. });
  115. });
  116. </script>

artTemplate

4、购物车数据渲染到提交的订单页面(这个功能吭的要命,主要原因是之前全部写好了,都要从库中拿数据,结果一个项目负责人一个无厘头要求,要购物车提交的订单不能经过从库中到提交页面,说白了,不访问数据库哇,这个功能吭的要命,明理就是ajax,但是厌烦那种拼串的日子,怎么弄,,,结果是弄出来了,因为这个项目是artTemplatejs模板渲染数据,妈的直接封装一个专门的渲染数据的方法,执行ajax请求成功的时候,让其也执行一遍。详细过程,大家看代码,2个静态页面通过js传值。

  1. //单击‘去下单’按钮并执行将购物车的数据通过js模板渲染到submit.html页面中
  2. $(function(){
  3. $('a.red-def-btn').click(function(){
  4. var aFatherData=[],aSonData=[];
  5. //店铺列表
  6. $.each($('.note-tit .checked'),function(){
  7. aFatherData.push($(this).find('input').data('fData'));
  8. //这里清空userList 数组的长度,主要是为了清空userList下的数据,为后面动态加入数据辅助
  9. $(this).find('input').data('fData').userList.length=0;
  10. });
  11.  
  12. //商品列表
  13. $.each($('.order-tr .key-0 .checked'),function(){
  14. for(var i=0; i<aFatherData.length; i++){
  15. //在这通过判断选中的商品所属店铺然后动态插入数据
  16. aFatherData[i].bUserSellerName==$(this).parents('.success-order-note').find('.note-tit span').text() && aFatherData[i].userList.push($(this).find('input').data('sData'));
  17. }
  18. });
  19.  
  20. //动态执行ajax,并动态渲染js模板数据到订单页面submitOrders.html
  21. $.ajax({
  22. url:"submitOrders.html",
  23. type: 'get',
  24. async:false,
  25. dataType: 'html',
  26. beforeSend:function(){},
  27. success:function(data){
  28. var $otherHTML=$(data);
  29. $('body').html($otherHTML);
  30. tplData(aFatherData);
  31. },
  32. error:function(){}
  33. });
  34. //console.log(JSON.stringify(aFatherData));
  35. });
  36. });

从购物车至订单页面通过js传值

5、css3动画

  1. &::after{content: ""; position:absolute; left:0; top:0; width:100%; height:100%; border-radius:10px; box-shadow: inset 0 0 0.375em rgba(255,0,0,0.75); transform: scale(1); animation: rep 2s infinite ease;}

css3动画

  1. //定义帧动画
  2. @keyframes rep{
  3. 0% {opacity: 0;}
  4. 20% {opacity: 1; transform: scale(2);}
  5. 50%,100%{opacity: 0; transform: scale(3);}
  6. }
  7.  
  8. //解决ff/chrome 1px问题
  9. @media screen and (-webkit-min-device-pixel-ratio:0)
  10. {
  11. .ffox{padding-top: 4px !important;}
  12. }

帧动画

6、网站地址重定向一个基准地址:base(href, target,域名可以解决ie8的兼容性问题)

  1. function cStar(){
  2. //每条评论星星显示控制,实时
  3. $.each($('.toldDetail'), function(inx,ele){
  4. var rule=$(ele).find('.toldRule').data('userscore');
  5. for(var i=0; i<=5-rule; i++){
  6. $(ele).find('.toldRule i').eq(5-i).addClass('rmR');
  7. }
  8. });
  9.  
  10. //商品满意度星星显示控制
  11. var avg=$('.showS').data('avgscore')+'';
  12. var ogg=parseInt(avg)-1;
  13. var dott=Subtr(parseFloat(avg),parseInt(avg));
  14. var w=accMul(dott,16)+'px'; //防止精度丢失
  15. var $aFull=$('.full1 i'); //色块
  16. $.each($('.showS i'), function(inx, ele) {
  17. $(ele).css('left', inx*22+44+'px'); //布局转换思想
  18. });
  19. $.each($('.showS i'), function(inx, ele) {
  20. $(ele).css('position', 'absolute');
  21. if(inx<=ogg) {
  22. //整数部分通用
  23. $(ele).css('background-color', '#FF5F8A');
  24. blockColor($aFull.eq(inx),inx);
  25. }
  26. if(ogg+1==inx){
  27. //改变左边星星小数部分色块
  28. var $em=$('<em style="left:'+(44+inx*22)+'px;width:'+w+'"></em>');
  29. $(ele).after($em);
  30. //改变右边色块小数部分
  31. blockColor($aFull.eq(inx),inx);
  32. $aFull.eq(inx).css('width',dott*80+'px');
  33. }
  34. });
  35.  
  36. function blockColor(obj,num){
  37. switch(num){
  38. case 0:obj.addClass('bkOne'); break;
  39. case 1:obj.addClass('bkTwo'); break;
  40. case 2:obj.addClass('bkThr'); break;
  41. case 3:obj.addClass('bkFor'); break;
  42. case 4:obj.addClass('bkFive'); break;
  43. }
  44. }
  45. }
  46.  
  47. //这里同时绑定了多个鼠标事件 星星评价
  48. $('li.de-tail').on('mouseover mouseout click', '.de-star>i', function(e){
  49. var $this=$(this); //单击了,就保存当前对象
  50. var $aI=$this.parent('.de-star').find('i');
  51.  
  52. if(e.type=='mouseover'){
  53. for(var i=1; i<=5; i++){
  54. $aI.eq(i-1).removeClass('red-star');
  55. for(var j=1; j<=$this.attr('ipos'); j++) {
  56. $aI.eq(j-1).addClass('red-star');
  57. }
  58. }
  59. $this.attr('cFlag',0);
  60. }else if(e.type=='mouseout'){
  61. if(!parseInt($this.attr('cFlag'))){
  62. for(var i=1; i<=5; i++){
  63. $aI.eq(i-1).removeClass('red-star');
  64. for(var j=1; j<=$this.parents('li.de-tail').attr('ix'); j++){
  65. $aI.eq(j-1).addClass('red-star');
  66. }
  67. }
  68. }
  69. }else{
  70. $this.parents('li.de-tail').attr('ix',$this.attr('ipos'));
  71. $this.attr('cFlag',1);
  72. $.each($aI,function(inx, ele){
  73. for(var i=1; i<=5; i++){
  74. $aI.eq(i-1).removeClass('red-star');
  75. for(var j=1; j<=$this.parents('li.de-tail').attr('ix'); j++){
  76. $aI.eq(j-1).addClass('red-star');
  77. }
  78. }
  79. });
  80. }
  81. });

满意度实时更新;星星评价动态改变

7、ajax回退历史记录(回退之前保存记录、并返回刷新、跳转)

  1. //提交支付回退至购物车 另外jQ中$(function(){})|$(document).ready(function($){}):载入 (function($){})(jQuery):匿名写法 自执行
  2. //history.pushState|replaceState(state, title, url)
  3. //state:与要跳转到的URL对应的状态信息。title:标题(现在是被忽略,未作处理)。url:要跳转到的URL地址,不能跨域。
  4. if (window.history && window.history.pushState) { //这里做下兼容处理,因为jq不存在history封装,只能通过原生
  5. $(window).on('popstate', function () { //点击回退,就会触发这个操作
  6. var hashLocation = location.hash;
  7. var hashSplit = hashLocation.split("#!/");
  8. var hashName = hashSplit[1];
  9. if (hashName !== '') {
  10. var hash = window.location.hash;
  11. if (hash === '') {
  12. window.location.reload();
  13. }
  14. }
  15. });
  16. window.history.pushState('forward', null, 'stc/customer/ahtmls/order/back_fullOrderCart.html');
  17. }
  18.  
  19. function goHisCart(){
  20. var his=$.getCookie('uHis');//主要为了给回退购物车历史做辅助
  21. var hef=Request('hef'); //截取地址栏的参数
  22. if(his||hef){
  23. $('.asideItem li').each(function(inx,ele){
  24. if($(ele).data('his')==his||$(ele).data('his')==hef) {
  25. $(".asideItem li").removeClass('as-on');
  26. $(ele).addClass("as-on").trigger('click');
  27. }
  28. });
  29. }else{
  30. return;
  31. }
  32. }

Ajax回退历史记录

8、

B2B商城网站前端开发的更多相关文章

  1. 移动平台3G手机网站前端开发布局技巧

    本文转载至:移动平台3G手机网站前端开发布局技巧汇总 - 前端开发-武方博 您或许正在或准备参与一个WepApp项目,您或许正在Google搜索mobile development相 关的文章,您或许 ...

  2. 移动平台3G手机网站前端开发布局技巧汇总

    移动平台3G手机网站前端开发布局技巧汇总 作者:前端开发-武方博   发布:2011-05-10 09:11   分类:移动开发   阅读:120,618 views   7条评论     您或许正在 ...

  3. 常用网站--前端开发类+网页设计类+平面素材类+flash类

    前端开发类 animate CSS 前端开发网 我爱CSS 大家网 W3School jQuery开发技术详解教程视频 jQuery中文社区 jQueryChina 网页设计类 禅意花园 CSS Do ...

  4. 网站前端开发--css篇

    Ⅰ 全局:global.css 全局样式为全站公用,为页面样式基础,页面中必须包含. 结构:layout.css 页面结构类型复杂,并且公用类型较多时使用.多用在首页级页面和产品类页面中. 私有:st ...

  5. 移动平台WEB前端开发技巧汇总(转)

    最近我很关注移动前端的知识,但做为一个UI设计师和web前端工作人员没有这个工作环境接触,做为门外汉,网上系统的知识也了了,一直有种雾里看花的感觉,见到本文,我自己是奉为经典.所以我分享之后又专门打笔 ...

  6. 【项目总结】扯一扯电商网站前端css的整体架构设计(1)

    最近半忙不忙的写了一个外包网站,网站主要功能是艺术品竞拍和艺术衍生品的销售.工程已经完成了80%左右,现在前后端代码量已经50W行左右,我主要负责的是前端设计和前端布局.下面就先放一个网站的设计图吧, ...

  7. [转] Web前端开发工程师常用技术网站整理

    1.常用工具相关 有道云笔记 http://note.youdao.com/signIn/index.html 36镇-最好用的共享收藏夹 http://www.36zhen.com/ 浏览器同步测试 ...

  8. Web前端开发工程师常用技术网站整理

    1.常用工具相关 有道云笔记 http://note.youdao.com/signIn/index.html 36镇-最好用的共享收藏夹 http://www.36zhen.com/ 浏览器同步测试 ...

  9. 上海洋码头(www.ymatou.com)急招技术人才(职位:互联网软件开发工程师,.NET网站架构师,Web前端开发工程师,高级测试工程师,产品经理)

    对公司招聘职位有兴趣的童鞋可以把简历发送到zhangzhiqiang@ymatou.com,我们HR会快速给你答复. 互联网软件开发工程师 岗位职责: 1.参与洋码头各个平台(www.ymatou.c ...

随机推荐

  1. HDU5402 暴力模拟

    因为题目中没有说是否是正整数,导致我们以为是DP,没敢做...太可惜了,不过现场赛绝对不会出现这种情况,毕竟所有的提问是都可以看见的. 题意:告诉一个矩阵,然后求从(1,1)到(n,m)能走过的最大和 ...

  2. iOS内置音频

    Predefined soundsThere are some predefined system sounds, for the system sound ID in the range 1000 ...

  3. android 瀑布流效果 保存地址

    http://tech.ddvip.com/2013-09/1379785198203013_2.html

  4. 电脑重装BIOS设置中文翻译

  5. 《深入浅出Node.js》第8章 构建Web应用

    @by Ruth92(转载请注明出处) 第8章 构建Web应用 一.基础功能 请求方法:GET.POST.HEAD.DELETE.PUT.CONNECT GET /path?foo=bar HTTP/ ...

  6. caffe 安装资料整理

    最近在安装caffe,因为过程繁琐,而且不同的作者给出了不同的安装教程,鱼龙混杂,所以做了个简单的整理. 基本安装方法在下面博客上面都有详细介绍,不过不同版本的硬件适配不同版本的软件,所以安装的时候一 ...

  7. 网站统计中的数据收集原理及实现(share)

    转载自:http://blog.codinglabs.org/articles/how-web-analytics-data-collection-system-work.html 网站数据统计分析工 ...

  8. C#编程语言与面向对象—— 多态

    多态编程的基本原理是: 使用基类或接口变量编程. 在多态编程中,基类一般都是抽象类,其中拥有一个或多个抽象方法,各个子类可以根据需要重写这些方法.或者使用接口,每个接口都规定了一个或多个抽象方法,实现 ...

  9. 导出excel表格。

    导出也做了很多遍了,还是发现好记性不如烂笔头,还是记下来. public void exportLog(HttpServletRequest request,HttpServletResponse r ...

  10. 初用eclipse和svn遇见的问题以及解决方法

    第一次用eclipse 首先用SVN输入URI出现报错 去百度查了一下 大致就两点问题 1.防火墙的问题 2.SVN服务没开 我两个问题都不存在就去请教大神得到解决方案 解决方案:把URI的机器名改成 ...