美文网首页
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