reactjs - 如何在 react Hook 中只允许输入数字?

标签 reactjs input react-hooks

阅读 this answer我想出了这段代码,但没有用。我错过了什么?

function App() {
  const [value, setValue] = useState();

  function onChange(e) {
    const re = /^[0-9\b]+$/;
    if (e.target.value === "" || re.test(e.target.value)) {
      setValue(e.target.value);
    }
  }

  return <input value={value} onChange={onChange} />;
}

render(<App />, document.getElementById("root"));

最佳答案

这是根据 post 更新的答案

您可以使用属性 type="number"pattern="^-?[0-9]\d*\.?\d*$" ,所以像这样修改你的输入元素:

/* Chrome, Safari, Edge, Opera */

input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}


/* Firefox */

input[type=number] {
  -moz-appearance: textfield;
}
<input type="number" pattern="^-?[0-9]\d*\.?\d*$" />

来源:w3shools

附言或者您可以跳过 type=number 部分和额外的 CSS,只使用该模式。

关于reactjs - 如何在 react Hook 中只允许输入数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61368305/

相关文章:

html - 如何使用 em 设置输入字段宽度并禁用它在内容区域上扩展?

javascript - 如果它有值,则将 html 输入框设置为只读

html - 有没有办法设置输入字段值的一部分?

javascript - 自动扩展行和子行使用钩子(Hook) react 表

reactjs - react-admin 创建一个可以从菜单侧边栏访问的自定义页面

javascript - 为什么我的占位符无法正确显示? ( react native 日期选择器)

wordpress - 尝试通过 React Web App 创建 Headless Wordpress 登录

javascript - 为什么在使用 react-table 时使用 `useTable` 而不是 `ReactTable`

javascript - 为什么每次我的标题渲染都使用了 React.memo?

reactjs - React Native 中的 Stomp 和 SockJs