准备回家养猪的程序员通过本文主要向大家介绍了iput利用正则表达式动态监控数据实现输入金额(限制整数输入位数和两位小数)等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
<input type="tel" oninput="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位