如何阻止E,e, -, +, .的輸入當(dāng)input 的type是number in React JS

前言

程序員小周經(jīng)過一周的加班終于可以功能提測(cè),sei知道測(cè)試姐姐剛開始測(cè)就告訴小周,你這不行,你這些輸入字段都應(yīng)該限制成數(shù)字,小周一聽,好辦啊,改個(gè)type類型唄,卡卡改完代碼,卡卡就提交啦!這時(shí)候產(chǎn)品哥哥跑過來躍躍欲測(cè),我滴天,這個(gè)e是幾個(gè)意思,這個(gè)+,-,.是咋個(gè)回事,留下目瞪口呆卡卡打臉滴小周,臨走產(chǎn)品哥哥還安慰小周,沒事,這個(gè)一百度就解決了= =|||

然后

小周跟這個(gè)e杠上了,不明白這個(gè)e到底是個(gè)啥身份,你又不是數(shù)字,你瞎湊什么熱鬧。一查目瞪口呆.jpg,e = 2.71828!好吧,看我怎么消滅你!

不出意外,如果你也是搜索input type number e的話,相信你一定能看到這個(gè)聲稱一句話搞定滴解決方式

<input type="number" onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))">

如果你直接cope到你的react代碼里面,第一步會(huì)報(bào)錯(cuò)告訴你onKeypress不存在,好吧,改成onKeyPress,不對(duì),onKeyPress得賦個(gè)function,不能是string。那接著抽個(gè)方法

handleKeyPress(event) {
    return (/[\d]/.test(String.fromCharCode(event.keyCode)));
}
//render
<input type="number" onKeypress={this.handleKeyPress}>

不出意外,這個(gè)時(shí)候你的e,+,-等等這些討厭的字符還是存在,你找了好久,才發(fā)現(xiàn)event里面根本就沒有keyCode,只有key,charCode,然后你又改

handleKeyPress(event) {
    return (/[\d]/.test(String.fromCharCode(event.charCode)));
}
//render
<input type="number" onKeypress={this.handleKeyPress}>

咦,說好的一句話解決的呢!騙子,不好使!為什么呢!
仔細(xì)瞅瞅這句話,用正則驗(yàn)證每次輸入的單個(gè)字符,即使返回false也并沒有卵用啊,為了驗(yàn)證

<input type="number" onKeypress={false}>

哎果然,現(xiàn)象是一樣的。
換個(gè)思路吧,其實(shí)就是想當(dāng)key是e,E,+,-,.的時(shí)候阻止它的默認(rèn)行為

handleKeyPress(event) {
    const invalidChars = ['-', '+', 'e', '.', 'E']
    if(invalidChars.indexOf(event.key) !== -1){
      event.preventDefault()
    }
}
//render
<input type="number" onKeypress={this.handleKeyPress}>

果然,搞定啦!
附上其他解決方式:https://stackoverflow.com/questions/39291997/how-to-block-e-in-input-type-number

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 文/吳雷 今天遇到一件小事,其實(shí)同類的問題以前經(jīng)常遇上,我只是沒有反思自己......下午時(shí),正好遇到對(duì)門出去,我...
    吳雷china閱讀 368評(píng)論 0 1
  • 今天早上老公告訴我說羨慕我有精力做自己喜歡的事,今天為自己指定了第一個(gè)成長(zhǎng)計(jì)劃,每周三晚上,散跑步半小時(shí),一共用時(shí)...
    康康_9342閱讀 194評(píng)論 0 0
  • 和我一起用鏡頭 探訪城市里的犄角旮旯 聽老巷子老房子的故事 ...
    Mrzjy閱讀 593評(píng)論 0 5
  • (三) 火星到地球飛行需要一年多的時(shí)間,飛船系統(tǒng)每隔一個(gè)月就會(huì)輪流喚醒我們中的一個(gè),對(duì)飛船進(jìn)行維護(hù)檢查,李濤第一個(gè)...
    楚月秦風(fēng)閱讀 590評(píng)論 0 4

友情鏈接更多精彩內(nèi)容