本文已参与「新人创作礼」活动,一起开启掘金创作之路。
数字校验:
//校验数字 返回true 不是数字 false是数字
function checknumber(String){
// isNaN()函数 把空串 空格 以及NUll 按照0来处理 所以先去除
if(val === "" || val ==null){
return true;
}
if(!isNaN(val)){
return false;
}else{
return true;
}
}
//应用
var num = $("#num").val();
if(checknumber(num)){//不是数字
top.$.jBox.tip("num不是纯数字");
return;
}
实现千分符样式:
$(document).ready(function(){
//初始化千分符
$(".moneyFormat").formatCurrency();
$(".moneyFormat").bind("change",function(){
$(this).formatCurrency();
})
})
//应用
<input id="num" name="num"
type="text"
value=""
class="input-small moneyFormat required"/>
去掉千分符:
//应用
var num = $("#num").val();
num.replace(/,/gi, '')
遍历表格校验时注意:
//表格中数字校验
function check(){
//定义标识:因为return仅仅是停止循环,不能使整个function停止或返回false
var flagA = true;
$("table tr[name='xxList']").each(function(){
var num = $(this).find("td").eq(8).find("input").val();
//校验是否是数字前去掉千分符
var num = num.replace(/,/gi, '');
if(checknumber(num)){//不是数字
top.$.jBox.tip("应缴保费只能为数字");
flagA = false;
return;
}
});
if(!flagA){//不通过
return false;
}
}
js计算小数时结果不准确问题的解决
简单代码演示
// 不采取任何措施的时候
var result = 0.18+0.72;
console.log("0.18+0.72="+result)
查阅资料
js计算时,会将十进制转换成二进制,再进行计算,但有些小数转换成二进制时候,出现了无限循环,由于位数有限,所以就出现了截取,所以就导致了再转化成十进制后结果的不精确.所以就出现这种情况。
解决方案(引入使用math.js)
- 如下在前端页面添加math.js
// 引入
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/3.14.2/math.min.js"></script>
- 使用math中方法,此处仅举例加法
// 使用math.js里的方法进行计算
var result = math.number(math.add(math.bignumber(0.18),math.bignumber(0.72)));
console.log("0.18+0.72="+result)