Я создал компонент React для ввода валюты, чтобы пользователь мог вводить числовые значения. Я сделал тип ввода «число». Это работает только в Chrome (пользователь может вводить нечисловые значения в Firefox).
Компонент CurrencyInput:
import React from "react";
import { Form } from "semantic-ui-react";
interface ICurrencyInputProps {
onChange(value: any): void;
checkRange?: boolean;
min: number;
max: number;
validationMessage: string;
cssClasses?: string;
}
export class CurrencyInput extends React.Component<ICurrencyInputProps> {
state = {
showInvalidError: false,
value: null
};
render() {
return (
<>
<Form.Input
icon="pound"
iconPosition="left"
placeholder="Whole pounds"
className={this.props.cssClasses}
type="text"
error={this.state.showInvalidError}
onChange={(event: any) => {
let value = null;
if (event.target.value) value = parseInt(event.target.value);
this.setState({ value: value });
this.props.onChange(value);
}}
/>
</>
);
}
}
export default CurrencyInput;
Применение:
<CurrencyInput
cssClasses="has_tooltip"
checkRange={true}
onChange={(data: any) => {
this.setState({
premium: data
});
}}
min={TargetPremiumRange.MIN}
max={TargetPremiumRange.MAX}
validationMessage="Validation message"/>
Я хочу запретить пользователю вводить любое нечисловое значение. Как я могу этого добиться?
type="text" pattern="[0-9]*"
ура - person Chris W.   schedule 04.02.2020