Javascript 自定义输入类型=';范围';

Javascript 自定义输入类型=';范围';,javascript,css,html,Javascript,Css,Html,我想使用html5input type=range,这样它只在用户滑动光标时才在滑块上工作,而不是在用户直接单击工具栏上的任何点时 以下方法可能会让您成功: 在鼠标按下事件中缓存当前值和鼠标位置 在鼠标向上事件中,如果鼠标位置仍然相同(即单击),则重置该值 比如: $(function () { var lastValue = null; var lastMousePos = null; $('#myRange').on('mousedown', function(e) {

我想使用html5input type=range,这样它只在用户滑动光标时才在滑块上工作,而不是在用户直接单击工具栏上的任何点时


以下方法可能会让您成功:

  • 在鼠标按下事件中缓存当前值和鼠标位置
  • 在鼠标向上事件中,如果鼠标位置仍然相同(即单击),则重置该值
  • 比如:

    $(function () {
      var lastValue = null;
      var lastMousePos = null;
        $('#myRange').on('mousedown', function(e) {
          lastValue = e.target.value
          lastMousePos = [e.pageX, e.pageY]
        })
      $('#myRange').on('mouseup', function(e) {
          mousePos = [e.pageX, e.pageY]
          if(mousePos[0] == lastMousePos[0] && mousePos[1] == lastMousePos[1]) {
            $(e.target).val(lastValue)
          }
        })
    })
    
    以下是指向工作代码笔的链接:

    我不建议更改默认行为,解决方案可能会出现视觉故障。如果你同意的话,你可以试试这个解决方案

    --评论后编辑--


    如果您对视觉故障不满意,并且准备做更多骇客的事情(可能不是一个好主意),您可以使用辅助输入来隐藏故障。这里是另一个示例实现,如果您注意到的话,仍然有一个非常小的故障!:

    这是一个社交平台,唯一的目的是分享问题,如果过去有人已经解决了问题,那么就得到解决方案。只是为了让问题易于理解和排序,没有必要把所有的东西都放进去在这里如果你不能解决这个问题,就继续用否决票来劝阻人们,宣传你的观点。每个来这里的人都知道他们是来帮助别人的,所以我不理解你的逻辑。