我正在使用material-ui在我的react应用程序中呈现TextField组件。它以某种方式强制所有<TextField type="number />使用小数分隔符作为逗号(,)而不是点(.)这对目标用户来说是令人困惑的。
有没有办法强制它始终以点作为小数点分隔符,而不管语言环境如何?
我已经创建了一个small example here。只需尝试输入一个带有小数的数字,然后单击外部,它会将其转换为逗号。这可能是因为我当前的设备区域设置,但我仍然想强制每个人都使用一个点。
发布于 2019-11-06 18:51:39
按照我的建议,使用第三方库来集成到Textfield组件中;您可以使用react-number-format库作为Textfield的inputProp。它之所以有效,是因为上面提到的库提供的数字格式化程序有一个缺省为一个字符串"."的decimalSeparator属性
自定义数字格式化程序如下所示:
import NumberFormat from 'react-number-format';
interface NumberFormatCustomProps {
inputRef: (instance: NumberFormat | null) => void;
onChange: (event: { target: { value: string } }) => void;
}
function NumberFormatCustom(props: NumberFormatCustomProps) {
const { inputRef, onChange, ...other } = props;
return (
<NumberFormat
{...other}
getInputRef={inputRef}
onValueChange={values => {
onChange({
target: {
value: values.value
}
});
}}
isNumericString
/>
);
}它可以用在数字文本字段中,如下所示:
<TextField
label="react-number-format"
value={values.numberformat}
onChange={handleChange("numberformat")}
id="formatted-numberformat-input"
InputProps={{
inputComponent: NumberFormatCustom as any
}}
type="number"
/>要获得完整的功能示例,请查看此sandbox。
https://stackoverflow.com/questions/58712520
复制相似问题