一尘不染

禁止在`上滚动`

css

是否可以禁用滚轮在输入数字字段中更改数字?我已经弄乱了特定于Webkit的CSS,以删除微调框,但我想完全摆脱这种行为。我喜欢使用type=number它,因为它在iOS上带来了一个不错的键盘。


阅读 281

收藏
2020-05-16

共1个答案

一尘不染

防止其他对象建议的输入数字元素上的mousewheel事件的默认行为(调用“ blur()”通常不是首选方法,因为这不是用户想要的)。

但。我会避免一直监听所有input-number元素上的mousewheel事件,而只在该元素处于焦点时(即存在问题的时候)才这样做。否则
当鼠标指针在输入数字元素上的任意位置时 ,用户将无法滚动页面

jQuery解决方案:

// disable mousewheel on a input number field when in focus
// (to prevent Cromium browsers change the value when scrolling)
$('form').on('focus', 'input[type=number]', function (e) {
  $(this).on('wheel.disableScroll', function (e) {
    e.preventDefault()
  })
})
$('form').on('blur', 'input[type=number]', function (e) {
  $(this).off('wheel.disableScroll')
})

(将焦点事件委托给周围的表单元素-避免使用许多不利于性能的事件侦听器。)

2020-05-16