input type['number']輸入框的一些問題

由于公司項(xiàng)目需求,要做一個(gè)只允許輸入數(shù)字、最多兩位小數(shù)的輸入框,其他字符直接不讓輸入,超出也不讓輸

試了很多種辦法,都不能很好的滿足需求,主要是鍵盤事件中文輸入法下 都失效了,replace也不友好

最后還是決定用input type['number'] 這樣可以解決大部分問題

但是這個(gè)number類型的輸入框 有一些問題,可以輸入字母e(中英文輸入法下都可以輸)、還可以輸入+、-號(hào),有點(diǎn)氣

(后面網(wǎng)上 看到?原因是e在數(shù)學(xué)上代表2.71828,所以它也還是一個(gè)數(shù)字

最納悶的是,我在輸入框里面填e和+- ,我console.log()出來這個(gè)輸入框里面的內(nèi)容 居然為空?


1、首先為了美觀 把上下箭頭去掉

input::-webkit-outer-spin-button, input::-webkit-inner-spin-button {

????-webkit-appearance: none;

}

input[type="number"] {

????-moz-appearance: textfield;

}


2、要想設(shè)置number框只允許輸入純數(shù)字的話,我們?cè)趇nput的onkeypress的屬性里設(shè)置一個(gè)按鍵方法,來控制允許輸入的值:

(鍵盤事件在中文輸入法下失效哦)

@keypress.native=“ if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 ||/\.\d\d{1}$/.test(val))event.returnValue=false ”


3、看到一個(gè)屬性,本來以為希望了,結(jié)果不兼容chorme,吐血,不過也看看吧

ime-mode:disabled 禁止表單使用文本框輸入法

ime-mode的語法:ime-mode : auto | active | inactive | disabled

取值:

auto? : 默認(rèn)值。不影響IME的狀態(tài)。與不指定 ime-mode 屬性時(shí)相同

active? : 指定所有使用IME輸入的字符。即激活本地語言輸入法。用戶仍可以撤銷激活I(lǐng)ME

inactive? : 指定所有不使用IME輸入的字符。即激活非本地語言。用戶仍可以撤銷激活I(lǐng)ME

disabled? : 完全禁用IME。對(duì)于有焦點(diǎn)的控件(如輸入框),用戶不可以激活I(lǐng)ME

IME?是指 Input Method Editors 輸入法編輯器

用法:

.ime-disabled{ime-mode:disabled;}/* 屏蔽輸入法 */

<input type="number" name="mobile" class="ime-disabled" >


4、還有一個(gè)輸入時(shí)光標(biāo)位置靠上的問題

想讓光標(biāo)居中:讓input的高度等于里面文字的高度,然后用padding把框撐起來,這樣光標(biāo)的高度和位置就固定了。


雖然最后也沒有解決e和加減號(hào)的問題,但是也是學(xué)到了不少東西,其實(shí)在最后提交表單的時(shí)候 驗(yàn)證一下就好了

第一次寫這種文章,想到啥寫啥,有啥不好的地方,歡迎指出,以后有時(shí)間就會(huì)寫一些工作中遇到的一些問題

要是有知道解決辦法的,歡迎留言,非常感謝,我會(huì)持續(xù)更新的

?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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