美文网首页
js实现鼠标滑轮滚动加减数量

js实现鼠标滑轮滚动加减数量

作者: 五岁小孩 | 来源:发表于2021-02-09 20:42 被阅读0次

    js实现鼠标滑轮滚动加减数量

    目的

    页面存在数字input,js控制当鼠标移入input时,可鼠标滑轮滚动控制数字的加减

    实现

    • html

      <input type='number' class='numsInput' value='1' disabled>
      
    • js

      $(function(){
          //页面加载完成后执行,需要引入jquery.js
          
          //当需要控制的div是页面加载dom时已存在(静态标签),时使用
          staticListenMousewheel('numsInput')
          
          //当需要控制的div是js动态添加的时候使用
          dynamicListenMousewheel('numsInput')
      })
      //静态标签监听事件
      function staticListenMousewheel(domClass){
          $('.'+domClass).on("mousewheel DOMMouseScroll", function (e) {
              let that = e.target
              let srcVal = parseInt($(that).val())
              //获取上下滚动事件
              var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? 1 : -1))
              ||  // chrome & ie
                  (e.originalEvent.detail && (e.originalEvent.detail > 0 ? -1 : 1));  // firefox
              if (delta > 0) {
                  //向上滚动
                  console.log("wheelup");
                  $(that).val(srcVal + 1)
      
              } else if (delta < 0) {
                  if (srcVal >= 2) {
                      //向下滚动
                      console.log("wheeldown");
                      $(that).val(srcVal - 1)
      
                  }
              }
               //阻止默认行为:
              //保证滑轮滚动只控制数字的加减,而不会滚动屏幕
             e.preventDefault();
          });
          
      }
      //动态标签监听事件
      function dynamicListenMousewheel(domClass){
           $("body").on("mousewheel DOMMouseScroll", '.'+domClass, function (e) {
              let that = e.target
              let srcVal = parseInt($(that).val())
              //获取上下滚动事件
              var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? 1 : -1))
              ||  // chrome & ie
                  (e.originalEvent.detail && (e.originalEvent.detail > 0 ? -1 : 1));  // firefox
              if (delta > 0) {
                  //向上滚动
                  console.log("wheelup");
                  $(that).val(srcVal + 1)
      
              } else if (delta < 0) {
                  if (srcVal >= 2) {
                      //向下滚动
                      console.log("wheeldown");
                      $(that).val(srcVal - 1)
      
                  }
              }
               //阻止默认行为失效
             // e.preventDefault();
          });
          $("body").on('mouseover','.'+domClass,function () {
              // console.log('鼠标移入,隐藏页面滚动条,',
              //'保证鼠标滑轮滚动只控制输入框的数字加减,而不会同时滚动页面,优化用户体验')
              $("body").css("overflow","hidden")
          })
          $("body").on('mouseout','.'+domClass,function () {
              // console.log('鼠标移出,恢复页面滚动条,恢复鼠标滚动控制页面滚动')
              $("body").css("overflow","auto")
          })
      }
      

    相关文章

      网友评论

          本文标题:js实现鼠标滑轮滚动加减数量

          本文链接:https://www.haomeiwen.com/subject/uoponktx.html