<div class="container">
    Normal input <input type="number">
    No spinner <input class="input-no-spinner" type="number">
    No mousewheel (jQuery) <input class="input-no-mousewheel-jquery" type="number">
    No mousewheel (native Javascript) <input class="input-no-mousewheel-js" type="number">
    No mouse wheel (native JavaScript - event delegation) <input class="input-no-mousewheel-delegation" type="number">
</div>
/* decorate and format normal styles for display */
body {
    font-family: sans-serif;
    font-size: 16px;
}
input[type="number"] {
    background-color: #fff;
    border: 1px solid #bbb;
    border-radius: 3px;
    font-size: 1rem;
    margin-bottom: 15px;
    padding: 5px;
    width: 100%;
}
.container {
    display: block;
    margin: 10px auto;
    width: 80vw;
}
@media (min-width: 1200px) {
    .container {
        width: 1000px;
    }
}
/* end decorate page styles */


/* no spinner CSS */
.input-no-spinner {
    -moz-appearance: textfield; /* for old Firefox */
    appearance: textfield;
}
/* no spinner for webkit only (Chrome, Edge, Safari) - no standards */
.input-no-spinner::-webkit-outer-spin-button,
.input-no-spinner::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
$('.input-no-mousewheel-jquery').on('wheel', function(e){
    e.preventDefault();
});

let inputNoMousewheel = document.querySelector('.input-no-mousewheel-js');
if (inputNoMousewheel) {
    inputNoMousewheel.addEventListener('wheel', (e) => {
        e.preventDefault();
    });
}

document.addEventListener('wheel', (e) => {
    let thisElement = e.currentTarget.activeElement;
    if (thisElement.classList.contains('input-no-mousewheel-delegation')) {
        e.preventDefault();
    }
}, {
    // required passive false ( https://stackoverflow.com/a/37721906/128761 )
    passive: false
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js