<input type="tel" οninput="clearNoNum(this)">
html代码如上:
js代码如下:
$(document).ready(function () {
var total;
$("input.transparentInput").focus();
var u = navigator.userAgent, app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isiOS) {
$("input.transparentInput").attr('type','number')
}
});
function clearNoNum(obj) {
var temp;
obj.value = obj.value.replace(/[^\d.]/g, ""); //清除“数字”和“.”以外的字符
obj.value = obj.value.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的
obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); //只能输入两个小数
if (obj.value.indexOf(".") < 0 && obj.value != "") { //以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
obj.value = parseFloat(obj.value);
}
obj.value.replace(/^\d{0,6}(\.\d{0,2})?$/g, function(matched,index,originalText){
temp = matched
});
if ($(obj).val().split('.')[0].length == 6) {
total = $(obj).val();
$(obj).val(temp);
}else if($(obj).val().split('.')[0].length > 6){
$(obj).val(total);
}else if($(obj).val()=='.'){
$(obj).val('');
}
}
首先判断是ios还是安卓,ios不能用tel属性,换成number属性
其次根据正则表达式匹配并限制整数输入位数为6位