由于公司項(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ù)更新的