我們經(jīng)常有input[type]=number輸入純數(shù)字的需求,可網(wǎng)上找的辦法總是有點(diǎn)瑕疵。
一般的方法大概都是兼容ios就加上 pattern="[0-9]*",然后再用oninput="value=value.replace(/\D/g, '')"
但是上述方法還有瑕疵。
ios在第三方中文輸入法中輸入+,-,=,*等字符時(shí)清空了整個(gè)input里的內(nèi)容,而且還能輸入.(點(diǎn))
為解決這個(gè)問(wèn)題嘗試過(guò)用onkeydown來(lái)判斷keyCode,但是發(fā)現(xiàn)所有keyCode都是229,改成onkeyup,在安卓上可以,但是ios第三方中文輸入法還是229.
嘗試過(guò)-wap-input-format,也不管用。
一下方法,經(jīng)過(guò)實(shí)驗(yàn),是最完美的解決辦法。
<input id="test" type="number" pattern="[0-9]*" autocomplete="off" autocorrect="off" oninput="change(event)">
<script>
var a = '';
function change(e) {
if (!e.data && typeof (e.data) != 'undefined' && e.data != 0) { // 判斷e.data為Null,及 刪除
a = document.getElementById('test').value;
} else if (/[0-9]/.test(e.data)) { // 數(shù)字
a = document.getElementById('test').value;
}
else { // 其他字符
document.getElementById('test').value = ''
document.getElementById('test').value = a
}
}
</script>