Nur Zahlen. Eingabe von Zahlen in React
Ich versuche, Minus und Plus von der Eingabe auszuschließen, aber es geht schief:
handleChange(event) {
const value = event.target.value.replace(/\+|-/ig, '');
this.setState({financialGoal: value});
}
Eingabecode rendern:
<input style={{width: '150px'}} type="number" value={this.state.financialGoal} onChange={this.handleChange}/>
27
3
Ich habe versucht, Ihren Code nachzuahmen und festgestellt, dass es ein Problem in React mit
<input type='number' />
gibt. Um das Problem zu umgehen, sehen Sie sich dieses Beispiel an und versuchen Sie es selbst: https://codepen.io/zvona/pen/WjpKJX?editors=0010Sie müssen es als normale Eingabe (type='text') mit Muster nur für Zahlen definieren:
<input type="text" pattern="[0-9]*" onInput={this.handleChange.bind(this)} value={this.state.financialGoal} />
Und dann, um die Gültigkeit der Eingabe zu vergleichen:
const financialGoal = (evt.target.validity.valid) ? evt.target.value : this.state.financialGoal;
Die größte Einschränkung bei diesem Ansatz ist, wenn es um mobile --> wo Tastatur ist ' nicht in numerischen, sondern in normalen alphabetischen Format.
eine Code-Zeile
Um die Eingabe zu beenden, verwenden Sie "onKeyPress" und nicht "onChange".
Die Verwendung von
event.preventDefault()
innerhalb vononKeyPress
bedeutet, dass das Druckereignis gestoppt wird.Da der
keyPress
-Handler voronChange
ausgelöst wird, müssen Sie die gedrückte Taste (event.keyCode
) prüfen, NICHT den aktuellen Wert der Eingabe (event.target.value
)Demo unten 👇🏻