在做項目中偶然發現在蘋果手機 input=“number”不兼容,產品硬要求要調起數字鍵盤,只能輸入數字,下面是我的解決方法
<input type="number" value="" pattern="[0-9]*" onBlur="checkOnValChangedLR(this);" onkeyup="this.value=this.value.replace(/[, ]/g,'')" oninput="if(value.length>11)value=value.slice(0,11)" >
其實在代碼中最重要的代碼是兼容ios的是pattern="[0-9]*",有的博客寫 pattern="\d*" 也是可以的
下面是我在開發中檢驗銀行卡校驗的例子
<input id="inputBank" type="text" placeholder="銀行卡號僅支持輸入數字" onKeyUp="value=value.replace(/\D/g,'')" onafterpaste="value=value.replace(/\D/g,'')" />
<script>
//判斷是否是數字
function isNumber(num){
var reg = new RegExp("^[0-9]*$");
if(!reg.test(num)){
return false;
}
return true;
}
//校驗銀行賬號
function checkBank(account){
var reg=/^(\d{16}|d{17}|\d{19})$/;
if(!reg.test(account)){
//alert("請輸入16位或19位數字的銀行賬號");
return false;
} else {
return true;
}
}
$(function(){
var inputBank = $("#inputBank").val() ;
//數字校驗
if(!isNumber(inputBank)) {
showTipMsg("銀行卡號僅支持輸入數字!");
return false;
}
//16-19位數字校驗
if(!checkBank(inputBank)){
showTipMsg("請輸入16位或19位數字的銀行賬號!");
return false;
}
})
</script>