• 技术文章 >web前端 >js教程

    jQuery实现倒计时及短信倒计时功能的实现代码

    小云云小云云2018-02-05 14:24:22原创868
    本文主要和大家分享jQuery实现倒计时功能以及jQuery实现发送短信倒计时功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。

    在实际运用中,经常会使用到倒计时的效果。以下代码利用jQuery实现了一个倒计时计时器。

    <!DOCTYPE html> 
    <html> 
     <head> 
      <meta charset="UTF-8"> 
      <title>jquery倒计时实现</title> 
      <style type="text/css"> 
       .shop_list ul li{ 
        display: inline-block; 
        list-style: none; 
        width: 300px; 
       } 
      </style> 
     </head> 
     <body> 
      <p class="shop_list" id="shop_list"> 
       <ul> 
        <li> 
         <img src="img/index/zixun1.jpg"/> 
         <p class="listItem"> 
          <h5>小米手机 Note 顶配版</h5> 
          <p>全网通 香槟金 移动联通<br/>双4G手机 双卡双待</p> 
          <em>¥2998<i>起</i></em> 
          <span class="time" data-starttime="1445982375" data-endtime="1446350400"></span> 
         </p> 
        </li> 
        <li> 
         <img src="img/index/zixun1.jpg"/> 
         <p class="listItem"> 
          <h5>小米手机 Note 顶配版</h5> 
          <p>全网通 香槟金 移动联通<br/>双4G手机 双卡双待</p> 
          <em>¥2998<i>起</i></em> 
          <span class="time" data-starttime='1445982375' data-endtime='1446350400'></span> 
         </p> 
        </li> 
       </ul> 
      </p> 
     </body> 
     <script type="text/javascript" src="js/lib/jquery-1.10.1.min.js" ></script> 
     <script type="text/javascript"> 
      $(function(){ 
       //找到商品列表以及时间显示span 
       var abj = $("#shop_list"), 
        timeObj = abj.find('.time'); 
       //获取开始时间 
       var starttime = timeObj.data('starttime'); 
        
       // 定时器函数 
       function actionDo(){ 
        return setInterval(function(){ 
         timeObj.each(function(index, el) { 
          //surplusTime为活动剩余开始时间 
          var t = $(this), 
           surplusTime = t.data('endtime') -starttime; 
          //若活动剩余开始时间小于0,则说明活动已开始 
          if (surplusTime <= 0) { 
           t.html("活动已经开始"); 
          } else{ 
          //否则,活动未开始,将剩余的时间转换成年,月,日,时,分,秒的形式 
           var year = surplusTime/(24*60*60*365), 
            showYear = parseInt(year), 
            month = (year-showYear)*12, 
            showMonth = parseInt(month), 
            day = (month-showMonth)*30, 
            showDay = parseInt(day), 
            hour = (day-showDay)*24, 
            showHour = parseInt(hour), 
            minute = (hour-showHour)*60, 
            showMinute = parseInt(minute), 
            seconds = (minute-showMinute)*60, 
            showSeconds = parseInt(seconds); 
           t.html(""); 
           //设置输出到HTML的格式并输出到HTML 
           if (showYear>0) { 
            t.append("<span>"+showYear+"年</span>") 
           }; 
           if (showMonth>0) { 
            t.append("<span>"+showMonth+"月</span>") 
           }; 
           if (showDay>0) { 
            t.append("<span>"+showDay+"天</span>") 
           }; 
           if (showHour>=0) { 
            t.append("<span>"+showHour+"小时</span>") 
           }; 
           if (showMinute>=0) { 
            t.append("<span>"+showMinute+"分钟</span>") 
           }; 
           if (showSeconds>=0) { 
            t.append("<span>"+showSeconds+"秒</span>") 
           }; 
          }; 
         }); 
         starttime++; 
        },1000); // 设定执行或延时时间 
       }; 
       // 执行它 
       actionDo(); 
      }); 
     </script> 
    </html>

    jQuery短信倒计时功能的实现方法

    1.点击按钮的时候,可以进行倒计时,倒计时自定义.2.当接收短信失败后,倒计时停止,可点击重新发送短信.3.点击的元素支持一般标签和input标签。看似很复杂其实实现代码很简单,下面小编给大家分享下实现代码,需要的朋友参考下吧。

    实现的主要功能如下:

    1.点击按钮的时候,可以进行倒计时,倒计时自定义。

    2.当接收短信失败后,倒计时停止,可点击重新发送短信。

    3.点击的元素支持一般标签和input标签。

    html代码:

    <input type="button" class="sameBtn btnCur" value="发送验证码"/>
    <p class="sameBtn btnCur2">发送验证码</p>

    css代码:

    body{padding:100px;text-align: center;}
    .sameBtn{display: inline-block;font-size:12px;cursor:pointer;width:76px;height:25px;line-height: 25px;text-align: center;border:0;background: #3186df;color:#fff;}
    .sameBtn.current{background: #b1b1b1;}

    js代码:

       
    //短信倒计时功能
    /**使用方式如下:
     * $(".btnCur").CountDownF({
     *    time:120,
     *     resetWords:'重新发送', //文字定义
     *    cnSeconds:'s',//倒计时中显示中文的秒,还是s
     *    clickClass:'current', //点击后添加的class类
     *    countState:true,
     *    callback:function(){
     *      setTimeout(function(){
     *       //当发送失败后,可以立即清除倒计时与其状态
     *        $(".btnCur").CountDownF('clearState');
     *      },3000);
     *    }
     *  });
     *
     * */
    ;(function($,window,document,undefined){
      var pluginName = 'CountDownF',
      defaluts = {
        time:120,
        resetWords:'重新发送', //文字定义
        cnSeconds:'s',//倒计时中显示中文的秒,还是s
        clickClass:'current', //点击后添加的class类
        countState:true //是否可以倒计时,true可以倒计时,false不能进行倒计时
      }
      function Count(element,options){
        this.element = element;
        this.$element = $(this.element);
        this.state = true;
        this.settings = $.extend({},defaluts,options);
        this.number = this.settings.time;
        this.init();
      }
      Count.prototype = {
        init:function(){
          var self = this;
          self.$element.on('click',function(){
            if(self.state && self.settings.countState){
              self.state = false;
              if(self.settings.countState){
                self._count();
              }
              if(self.settings.callback){
                self.settings.callback();
              }
            }
          });
        },
        //倒计时函数
        _count:function(){
          var self = this;
          if(self.number == 0){
            self._clearInit();
          }else{
            if(self.number < 10){
              //如果当前元素是input,使用val赋值
              this.$element.attr('type') ? this.$element.val('0' + self.number + self.settings.cnSeconds) : this.$element.html('0' + self.number + self.settings.cnSeconds); 
            }else{
              this.$element.attr('type') ? this.$element.val(self.number + self.settings.cnSeconds) : this.$element.html(self.number + self.settings.cnSeconds);
            }
            self.number--;
            this.$element.addClass(self.settings.clickClass);
            self.clearCount = setTimeout(function(){
              self._count();
            },1000);
          }
        },
        //修改是否可发送短信验证码倒计时状态
        change:function(state){
          var self = this;
          self.settings.countState = state;
        },
        //置为初始状态
        _clearInit:function(){
          var self = this;
          self.$element.removeClass(self.settings.clickClass);
          self.$element.attr('type') ? self.$element.val(self.settings.resetWords) : self.$element.html(self.settings.resetWords);
          clearTimeout(self.clearCount);
          self.number = self.settings.time;
          self.state = true;
        },
        //清除倒计时进行状态
        clearState:function(){
          var self = this;
          self._clearInit();
        }
      };
      $.fn.CountDownF = function(options){
        var args = arguments;
        if(options === undefined || typeof options ==='object' ){
          return this.each(function(){
            if(!$.data(this,'plugin' + pluginName)){
              $.data(this,'plugin' + pluginName,new Count(this,options));
            }
          });
        }
        else if(typeof options === 'string' && options !== 'init'){
          var returns;
           this.each(function(){
            var data = $.data(this,'plugin' + pluginName);
            if(data instanceof Count && typeof data[options] === 'function'){
              returns = data[options].apply(data,Array.prototype.slice.call(args,1));
            }
            if(options === 'destory'){
               $.data(this, 'plugin' + pluginName, null);
            }
          });
           return returns !== undefined ? returns : this;
        }
        else{
          $.error('Method' + options + 'does not exist on jQuery.CountDownF');
        }
      }
    })(jQuery,window,document);

    调用方式:

    $(function(){
      $(".btnCur").CountDownF({
        time:120,
        countState:true,
        callback:function(){
          setTimeout(function(){
            $(".btnCur").CountDownF('clearState');
          },3000);
        }
      });
      $(".btnCur2").CountDownF({
        time:50,
        countState:true,
        cnSeconds:'秒',
        callback:function(){
          setTimeout(function(){
            $(".btnCur2").CountDownF('clearState');
          },5000);
        }
      });
    })

    相关推荐:

    实现短信倒计时60s的方法

    js防刷新的倒计时代码 js倒计时代码

    jQuery页面倒计时并刷新效果的实现方法

    以上就是jQuery实现倒计时及短信倒计时功能的实现代码的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:jQuery 倒计时 短信
    上一篇:ES6之async+await 同步/异步方案 下一篇:jquery倒计时小应用实现代码
    Web大前端开发直播班

    相关文章推荐

    • Angular如何对请求进行拦截封装?• 怎么获取Node性能监控指标?获取方法分享• react如何实现hooks?必须依赖 Fiber 么?• 浅析Angular中怎么用 Api 代理• ie8是否支持es6

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网