亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

禁用滾動所有輸入類型編號

禁用滾動所有輸入類型編號

慕無忌1623718 2021-11-12 16:08:38
我想禁用所有輸入類型編號上的所有滾動事件。我看到了一些例子來做到這一點,但所有的例子都只針對一個元素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 的解決方案嗎?
查看完整描述

1 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

在這個問題的幫助下:如何暫時禁用滾動?制定一個工作概念非常容易:


var keys = {37: 1, 38: 1, 39: 1, 40: 1};


// Select all input elements

var inputElems = document.getElementsByTagName('input');


// Turn them into an array

inputElems = Array.prototype.slice.call(inputElems);


// Create event listeners for input elements where type equals number

inputElems.forEach(function(elem) {

    if(elem.type.toLowerCase() == 'number') {

    elem.addEventListener('focus', disableScroll, false);

    elem.addEventListener('blur', enableScroll, false);

  }

});


function preventDefault(e) {

  e = e || window.event;

  if (e.preventDefault)

      e.preventDefault();

  e.returnValue = false;  

}


function preventDefaultForScrollKeys(e) {

    if (keys[e.keyCode]) {

        preventDefault(e);

        return false;

    }

}


function disableScroll() {

  if (window.addEventListener) // older FF

      window.addEventListener('DOMMouseScroll', preventDefault, false);

  document.addEventListener('wheel', preventDefault, {passive: false}); // Disable scrolling in Chrome

  window.onwheel = preventDefault; // modern standard

  window.onmousewheel = document.onmousewheel = preventDefault; // older browsers, IE

  window.ontouchmove  = preventDefault; // mobile

  document.onkeydown  = preventDefaultForScrollKeys;

}


function enableScroll() {

    if (window.removeEventListener)

        window.removeEventListener('DOMMouseScroll', preventDefault, false);

    document.removeEventListener('wheel', preventDefault, {passive: false}); // Enable scrolling in Chrome

    window.onmousewheel = document.onmousewheel = null; 

    window.onwheel = null; 

    window.ontouchmove = null;  

    document.onkeydown = null;  

}

#container {

  height: 300px;

  width: 300px;

  overflow: auto;

}


#inputs {

  height: 1000px;

  width: 300px;

}

<div id="container">

  <div id="inputs">

    <input type="text" value="This is a text input"/><br/>

    <input type="number"/><br/>

    <input type="number"/><br/>

    <input type="number"/><br/>

    <input type="number"/>

  </div>

</div>

當焦點位于具有數字類型的輸入字段之一時,它將禁用滾動。在模糊時,它會再次啟用它。請記住,這不會阻止用戶用鼠標手動向下拖動滾動條。禁用它是不可能的。


查看完整回答
反對 回復 2021-11-12
  • 1 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號