动态保留整数位以及动态保留小数位,然后可正可负(运用正则表达式)

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<title>用户注册</title>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
</head>

<body class="login-body">
<input type='text' onkeyup="DepartmentalInteger(this,6,5)" onblur="DepartmentalDecimalThirld(this,4)" > 第一个是输入可正数可负数6,保留最少四位小数,最多为五位
<br>
<br>
<input type="text" onkeyup="DepartmentalInteger(this,9,7)" onblur="DepartmentalDecimalThirld(this,6)"> 第二个是输入可正数可负数9,保留最少6位小数最多7小数
<br>
<br>
<input type="text" onkeyup="DepartmentalIntegerPlus(this,5,4)" onblur="DepartmentalDecimalThirld(this,3)"> 第三个是输入正整数5以及小数3-4
<br>
<br>

</body>
<script>
//获取输入的整数可为负数也可为正整数
function DepartmentalInteger(obj,vals,second) {
var val = String(obj.value);
if (val.indexOf("-") == 0) { //判断是否输入的是负数
val = val.substring(1);
val = transformDepartmentalInteger(val,vals,second);
val = "-" + val;
} else {
val = transformDepartmentalInteger(val,vals,second);
}

$(obj).val(val);
}
//输入的整数只能为正整数
function DepartmentalIntegerPlus(obj,vals,second){
var val = String(obj.value);
val = transformDepartmentalInteger(val,vals,second);
$(obj).val(val);
}
//二个函数最后调用的方法
function transformDepartmentalInteger(val,vals,second){
var investSumOne = /[^\d\.]/g; // 过滤非数字及小数点 /g :所有范围中过滤
var investSumSix = new RegExp("(\\.\\d{"+second+"})\\d*$","g"); //小数点后最多几位数
var investSumSecond = /(\.)(\d*)\1/g;
var investSumFoure = /\.+/g; //多个点的话只取1个点,屏蔽1....234的情况
var investSumFive = /(\.+)(\d+)(\.+)/g; //屏蔽1....234.的情况
var investSumDoubleOne = /[^\d]/g;//整数位的正则
var investSumDoubleTwo = new RegExp("(\\d{"+vals+"})\\d*$","g");//整数位最多6位
var investSumDoubleFour = new RegExp("(\\d*)\\"+vals,"g"); //删除当我输入第七位的整数时候进行删除
if (val.indexOf('.') <= -1) { //判断有没有输入小数点
val = val.replace(investSumDoubleOne, "").replace(investSumDoubleTwo, "$1").replace(investSumDoubleFour, "$1$2");
}
val = val.replace(investSumOne, "").replace(investSumSix, "$1").replace(investSumSecond, "$1$2");
val = val.replace(/[^0-9.]/g, '');
val = val.replace(investSumFoure, ".");
val = val.replace(investSumFive, "$1$2");

return val;
}
//判断保留几位有效数字
function DepartmentalDecimalThirld(obj,vals) {
var e = obj.value;
var y;
var x = String(e).length;
if (String(e).indexOf('.') > -1) { //判断有没有输入小数点
y = String(e).indexOf('.') + 1;
if (vals > x - y >= 1) {
var input = Number(obj.value);
input = input.toFixed(vals);
$(obj).val(input)
}
} else {
var input = Number(obj.value);
input = input.toFixed(vals);
$(obj).val(input)
}
}

</script>

</html>
posted @ 2018-11-27 08:16  changhuanran  阅读(1034)  评论(0编辑  收藏  举报