Javascript 禁用滚动所有输入类型编号

Javascript 禁用滚动所有输入类型编号,javascript,input,scroll,Javascript,Input,Scroll,我想禁用所有输入类型编号上的所有滚动事件 我看到了一些这样做的例子,但是所有的例子都只针对一个元素 input = document.getElementById("the_number_input") input.addEventListener("mousewheel", function(event){ this.blur() }) 或者使用Jquery $('form').on('focus', 'input[type=number]', function (e) { $(this

我想禁用所有输入类型编号上的所有滚动事件

我看到了一些这样做的例子,但是所有的例子都只针对一个元素

input = document.getElementById("the_number_input")
input.addEventListener("mousewheel", function(event){ this.blur() })
或者使用Jquery

$('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')
})

有一个使用香草javascript的解决方案?

在这个问题的帮助下:制定一个可行的概念非常容易:

var-keys={37:1,38:1,39:1,40:1};
//选择所有输入元素
var inputElems=document.getElementsByTagName('input');
//将它们变成一个数组
inputElems=Array.prototype.slice.call(inputElems);
//为类型等于number的输入元素创建事件侦听器
输入元素forEach(函数(元素){
if(elem.type.toLowerCase()=='number'){
元素addEventListener('focus',disableScroll,false);
元素addEventListener('blur',enableScroll,false);
}
});
功能默认值(e){
e=e | | window.event;
如果(如默认)
e、 预防默认值();
e、 returnValue=false;
}
CROLLKEYS(e)的默认功能{
if(键[e.keyCode]){
防止违约(e);
返回false;
}
}
函数disableScroll(){
if(window.addEventListener)//FF
addEventListener('DOMMouseScroll',preventDefault,false);
document.addEventListener('wheel',preventDefault,{passive:false});//禁用Chrome中的滚动
window.onwheel=preventDefault;//现代标准
window.onmouseheel=document.onmouseheel=preventDefault;//旧浏览器,即
window.ontouchmove=preventDefault;//移动
document.onkeydown=preventDefaultForScrollKeys;
}
函数enableScroll(){
if(window.removeEventListener)
removeEventListener('DOMMouseScroll',preventDefault,false);
document.removeEventListener('wheel',preventDefault,{passive:false});//在Chrome中启用滚动
window.onmouseheel=document.onmouseheel=null;
window.onwheel=null;
window.ontouchmove=null;
document.onkeydown=null;
}
#容器{
高度:300px;
宽度:300px;
溢出:自动;
}
#投入{
高度:1000px;
宽度:300px;
}






这似乎是一个繁重的解决方案,但我认为正因为如此,我选择了不禁用滚动功能worth@BlueSeph不客气。但是,不要被大量的代码淹没。这并没有说明它是否“重”。您可以拥有一个包含10.000行代码的javascript文件,它的运行速度仍然比一个只包含一行代码的文件要快得多,而这一行代码会执行一些非常繁重的正则表达式或文件读取。这里的代码只是创建和删除事件侦听器。这就是全部。它不会对性能产生明显的影响:),除非输入字段有千个结尾。。在这种情况下,你可能应该看看这个。