I am writing an app that contains a controlled input that has the type 'number'. I can still type letters in the input field, but the e.target.value just gets emptied. Does anyone know how I can disable the typing of letters? Namely, if a user types in a letter, the input field will simply not register but still keeps the numbers previously typed in.
Here is my code:
export class AddNewRecipe extends React.Component {
    constructor(props){
        super(props);
        this.state={prepField:{numeral:""}};
        this.handleInput = this.handleInput.bind(this)}
   handleInput(e){
      e.preventDefault();   
      if(e.target.className =='prepNumber')
      {   
          console.log(e.target.value)
          const newPrep = Object.assign({}, this.state.prepField)
          newPrep.numeral = currentValue
          this.setState({prepField: newPrep})
      }
render(){
return (<PrepTime 
        handlePrep={this.handleInput}
        prepField={this.state.prepField}
        />
)
}
 
and here is the child component
export default function(props){
    
    return(
        <div id = 'prepForm'>
            
                <input id = 'prepFormInput' type='number' className='prepNumber' value={props.prepField.numeral} onChange={props.handlePrep} placeholder='prep time' />
               
        </div>
    )
}
Does anyone know why that is? Because if I accidentally type '10v', the e.target.value which I will set to my state 'prepField.numeral' just becomes emptied.
Thank you!
 
     
    