javascript - 防止在输入范围 html 元素上发生 mousedown 事件,并且仍然允许用户拖动 slider

标签 javascript jquery html

那么有没有办法在输入范围元素上禁用 mousedown 和/或 click 事件,但同时允许用户拖动 slider 并仍然触发更改事件?

禁止在线点击,但仍然允许拖动 slider 。 我想阻止用户在 slider 中间跳转(使用鼠标按下/单击),但我想让他们拖动它以便值发生变化。

<input id="slider" name="slider" type="range" value="-1" min="-1" max="30" step="1" />

这没有帮助,因为范围的变化会被调用并弄乱数字。

$slider.on('mousedown', function(event) {
    //event.preventDefault();
    this.value = -1;
    /* Act on the event */
    console.log("mousedown");
});
 $slider.on('click', function(event) {
    event.preventDefault();
    this.value = -1;
    /* Act on the event */
    console.log("click");
});

如果我在 mousedown slider 上调用 event.preventDefault(); 不起作用并且无法拖动。有没有办法解决这个问题。

我正在尝试在 html 中重新创建这种效果,这种缩放是否有任何 jQuery 效果?

最佳答案

您可以使用 CSS pseudos-classesinputthumb pointer-events:auto(允许鼠标事件)并给范围的其余部分输入 pointer -events: none(不允许鼠标事件)。

参见:pointer-events

input[type=range]{
  pointer-events: none;
}
input[type=range]::-webkit-slider-thumb{/*Webkit Browsers like Chrome and Safari*/
  pointer-events: auto;
}
input[type=range]::-moz-range-thumb{/*Firefox*/
  pointer-events: auto;
}
input[type=range]::-ms-thumb{/*Internet Explorer*/
  pointer-events: auto;
}
<input type="range" value="0" min="0" max="100"/>

关于javascript - 防止在输入范围 html 元素上发生 mousedown 事件,并且仍然允许用户拖动 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20387534/

相关文章:

javascript - 运行任何报告时 MS CRM 2011 汇总 12 "Syntax error"

javascript - 使用 babel ES6 创建注解

javascript - 制作一个像 window.confirm 这样的函数,根据按钮单击返回 true 或 false

javascript - 使用 jQuery/JavaScript 获取带有 float li 的 ul 宽度

javascript - cordova window.location.href 行为错误

javascript - 可调整大小的 jQuery UI 工具不起作用?

javascript - 我该怎么办呢? (Chrome 扩展)

javascript - 按条件显示 kendo UI TreeView 的上下文菜单

jquery - 在 xquery 文件中应用 &lt;!DOCTYPE html>

php - 从 MySQL : Undefined Index error PHP 中提取日期时间