首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >只有数字。反应输入数

只有数字。反应输入数
EN

Stack Overflow用户
提问于 2017-04-28 19:53:04
回答 22查看 303.8K关注 0票数 84

我试图从输入中排除减号和加号,但是它出错了:

代码语言:javascript
代码运行次数:0
运行
复制
handleChange(event) {
  const value = event.target.value.replace(/\+|-/ig, '');
  this.setState({financialGoal: value});
}

呈现输入代码:

代码语言:javascript
代码运行次数:0
运行
复制
<input style={{width: '150px'}} type="number" value={this.state.financialGoal} onChange={this.handleChange}/>
EN

回答 22

Stack Overflow用户

回答已采纳

发布于 2017-04-28 20:25:16

我试图模仿您的代码,并注意到存在一个与<input type='number' />交互的问题。要解决这个问题,请检查这个示例并自己尝试:https://codepen.io/zvona/pen/WjpKJX?editors=0010

您需要将其定义为普通输入(type='text'),只对数字使用模式:

代码语言:javascript
代码运行次数:0
运行
复制
    <input type="text" pattern="[0-9]*"
     onInput={this.handleChange.bind(this)} value={this.state.financialGoal} />

然后比较输入的有效性:

代码语言:javascript
代码运行次数:0
运行
复制
const financialGoal = (evt.target.validity.valid) ? 
  evt.target.value : this.state.financialGoal;

这种方法最大的警告是,当涉及到移动->键盘不是数字,而是以正常的字母格式。

票数 76
EN

Stack Overflow用户

发布于 2020-12-04 05:03:34

简单的反应方式

代码语言:javascript
代码运行次数:0
运行
复制
<input
      onKeyPress={(event) => {
        if (!/[0-9]/.test(event.key)) {
          event.preventDefault();
        }
      }}
    />
票数 92
EN

Stack Overflow用户

发布于 2017-12-20 06:52:59

一行代码

代码语言:javascript
代码运行次数:0
运行
复制
<input value={this.state.financialGoal} onChange={event => this.setState({financialGoal: event.target.value.replace(/\D/,'')})}/>
票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43687964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档