1、只允许输入数字的js
调用方法:onkeydown='return checkNum()'
function checkNum() { var kc = event.keyCode; if(kc==229 ||kc==46 || kc==8 || kc==9 || (kc>=37 && kc<=40) || (kc>=96 && kc<=105)||(kc>=48 && kc<=57)) { return true; } return false; }
2、只允许输入小数的js
调用方法:onkeydown='return checkDecimal()'
如果需要限制输入的小数位数可以配合:onkeyup='return checkPrecision(this,2)'
function checkDecimal(){ var kc = event.keyCode; if(kc==229 ||kc==46 || kc==8 || kc==9 || (kc>=37 && kc<=40) || (kc>=96 && kc<=105)||(kc>=48 && kc<=57) || kc==110 || kc==190) { var val = event.srcElement.value; if(!val && (kc==110 || kc==190)){//如果第一个字符就是点号直接返回 return false; } if(val.indexOf(".")!=-1 && (kc==110 || kc==190)){//只如输入一个点 return false; } return true; } return false; }
限制小数精度的js
function checkPrecision(obj,precision){ var val = obj.value; if(val && precision){ if(val.indexOf(".")!=-1 && (val.length - val.lastIndexOf(".") - 1 > precision)){ obj.value = val.substring(0,val.length-1); obj.focus(); Event.stop(event); } } }
3、将数字转换成3位一逗号的形式(多用于金额的表示)
调用方法:onchange事件或者onblur事件
function formatSplitNum(num) { if(!/^(\+|-)?(\d+)(\.\d+)?$/.test(num)){ return num; } var a = RegExp.$1, b = RegExp.$2, c = RegExp.$3; var re = new RegExp().compile("(\\d)(\\d{3})(,|$)"); while(re.test(b)) b = b.replace(re, "$1,$2$3"); return a +""+ b +""+ c; }
注意:在实际代码中这样的js方法只能做很基本的校验,如果配合以下几个方法使用效果会更佳
style="ime-mode:Disabled" onpaste="return !clipboardData.getData('text').match(/\D\./)" ondragenter="return false"
//此代码控制了不能粘贴非小数点的数字,\D是匹配数字,\.是代表可以输入小数点