This question has been asked before back in 2011 Allow only numbers into a input text box but the final code doesn't work in my situation and I did wonder if there was an update scenario.
I am trying to stop all characters other than the numbers 0123456789 from being input.
document.getElementById("text_input").addEventListener("keydown", (eventObject) => {
    
  // Add : after the first 2 chracters
  const length = eventObject.target.value.length;
  const keyCode = eventObject.keyCode;
  
  if (keyCode != 8 && length === 2) {
    eventObject.target.value += ":"
  }
  
  // Stop all characters other than 0123456789 from being input
  const charCode = (typeof eventObject.which == "number") ? eventObject.which : eventObject.keyCode
  
  if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    return true;
});<input id="text_input" type="text" name="hours"> 
    