如何创建一个数字字段,其中焦点向外添加 3 个小数位?
How can I create a numeric field where the focus out adds 3 decimal digits?
我有一个文本字段:
<Grid item xs={12} sm={6}>
<BzTextField
fullWidth
label="dec"
value={company.dex}
/>
</Grid>
我想做的是创建一个新组件,这样我就可以创建一个新的输入类型编号,它必须添加 3 个十进制数字(例如 3.3 变为 3.300)。我对如何实现这样的事情有疑问。我应该使用 Hooks 还是有更简单的方法。
此外,验证应该是 onChange 而不是 keyUp。
试试这个:
const x = 3.3;
const y = x.toFixed(3);
console.log(y);
// result 3.300
Explanation:
here toFixed(n)
method used to extend value.
Where n
is the number you want to extend value of number.
这是您可以使用 material 实现的一种方法。我假设您不希望在焦点离开控件之前格式化文本。 material 中的 onChange 事件会在每次按键时触发,因此很难单独使用该事件进行格式化。
import React, { useState } from 'react';
import { TextField } from '@material-ui/core';
const BzTextField = ({ defaultValue = '' }) => {
const [value, setValue] = useState(defaultValue);
const handleBlur = (e) => {
let parsedValue = parseFloat(e.target.value);
if (parsedValue) {
setValue(parsedValue.toFixed(3));
}
}
return (
<TextField
type="number"
fullWidth
label="dec"
value={value}
onBlur={handleBlur}/>
);
};
export default BzTextField;
您可以通过创建受控输入并使用输入的 onBlur 功能来实现,该功能将在您完成输入编辑后执行 onBlur 功能。此函数将更改为数字添加 3 个小数位。
function App() {
const [input, setInput] = React.useState("")
const onBlur = () => {
setInput(parseFloat(input).toFixed(3))
}
return (
<div >
<body>
<input
type="number"
value={input}
onChange={e=>setInput(e.target.value)}
onBlur={onBlur}
/>
</body>
</div>
);
}
我有一个文本字段:
<Grid item xs={12} sm={6}>
<BzTextField
fullWidth
label="dec"
value={company.dex}
/>
</Grid>
我想做的是创建一个新组件,这样我就可以创建一个新的输入类型编号,它必须添加 3 个十进制数字(例如 3.3 变为 3.300)。我对如何实现这样的事情有疑问。我应该使用 Hooks 还是有更简单的方法。
此外,验证应该是 onChange 而不是 keyUp。
试试这个:
const x = 3.3;
const y = x.toFixed(3);
console.log(y);
// result 3.300
Explanation:
heretoFixed(n)
method used to extend value.
Wheren
is the number you want to extend value of number.
这是您可以使用 material 实现的一种方法。我假设您不希望在焦点离开控件之前格式化文本。 material 中的 onChange 事件会在每次按键时触发,因此很难单独使用该事件进行格式化。
import React, { useState } from 'react';
import { TextField } from '@material-ui/core';
const BzTextField = ({ defaultValue = '' }) => {
const [value, setValue] = useState(defaultValue);
const handleBlur = (e) => {
let parsedValue = parseFloat(e.target.value);
if (parsedValue) {
setValue(parsedValue.toFixed(3));
}
}
return (
<TextField
type="number"
fullWidth
label="dec"
value={value}
onBlur={handleBlur}/>
);
};
export default BzTextField;
您可以通过创建受控输入并使用输入的 onBlur 功能来实现,该功能将在您完成输入编辑后执行 onBlur 功能。此函数将更改为数字添加 3 个小数位。
function App() {
const [input, setInput] = React.useState("")
const onBlur = () => {
setInput(parseFloat(input).toFixed(3))
}
return (
<div >
<body>
<input
type="number"
value={input}
onChange={e=>setInput(e.target.value)}
onBlur={onBlur}
/>
</body>
</div>
);
}