1. 程式人生 > >動態保留整數位以及動態保留小數位,然後可正可負(運用正則表示式)

動態保留整數位以及動態保留小數位,然後可正可負(運用正則表示式)

<!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>