react下数字<input type=“number“>屏蔽步进器和滚动效果

1.屏蔽<input>右侧步进器

新建一个style.css文件,内容为

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

在源码文件中引入该css,并且修改<input>的classname,加上“numberinput”即可

import './style.css'

<input
    className="numberinput text-sm gray-900 max-w-sm p-2 border border-gray-300"
    maxLength={19}
    type="number"
/>

2.屏蔽<input>在获取焦点后鼠标滚动可以改变值的问题。

给<input>加上这么一条属性即可。

onWheel={event => (event.target as HTMLInputElement).blur()}

3.其他方案

在onChange或onKeyPress中使用正则检查输入是否正确。或者干脆别用<input>,换<InputNumber>等包装好的组件

<input
    onKeyPress={(event) => {
        if (!/[0-9]/.test(event.key)) {
          event.preventDefault();
        }
      }}
/>
<input 
    onChange={event => 
        this.setState({financialGoal: event.target.value.replace(/\D/,'')})
    }
/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值