react 输入框只允许输入数字,负号,小数点,只有两位小数,而且0在前面,鼠标焦点丢失时自动清除
时间: 2023-10-16 15:10:37 浏览: 164
可以通过在React组件的input标签中添加onChange和onBlur事件来实现这些要求。代码如下:
```jsx
import React, { useState } from 'react';
const NumberInput = () => {
const [value, setValue] = useState('');
const handleChange = (event) => {
const { value: inputValue } = event.target;
const regex = /^(-)?\d*\.?\d{0,2}$/;
if (regex.test(inputValue) || inputValue === '') {
setValue(inputValue);
}
};
const handleBlur = () => {
const regex = /^(-)?\d+(\.\d{1,2})?$/;
if (!regex.test(value)) {
setValue('');
}
};
return (
<input
type="text"
value={value}
onChange={handleChange}
onBlur={handleBlur}
placeholder="请输入数字"
/>
);
};
export default NumberInput;
```
在handleChange函数中,使用正则表达式来判断用户输入的值是否符合要求。如果符合要求,则更新组件的状态值;否则,不做任何操作。
在handleBlur函数中,再次使用正则表达式来判断最终输入的值是否符合要求。如果不符合,则将状态值清空。
最后,在组件的input标签中添加onChange和onBlur事件,并将状态值作为value属性绑定,即可实现以上要求。
阅读全文