首先,示例jsp中的整数录入、保存

<input class="form-control" id="unit" name="unit" placeholder="份数"
        type="text" 
        onkeypress="if(!this.value.match(/^[\+\-]?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+)?$/))this.o_value=this.value"
        onkeyup="if(!this.value.match(/^[\+\-]?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+)?$/))this.o_value=this.value"
        onblur="if(isNaN(value))this.value='';else this.value=value.replace(/\b(0+)/gi,'')"/>

其次,示例:jsp中保存四位小数(做到四舍五入)

<input class="form-control" id="firstPrem" name="firstPrem" placeholder="首期总保费"      data-rule-required='true' type="text"  value="${tblOrder.firstPrem }"    
  onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value"   
   onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value"
//////方案一:如果不考虑数据长度,还可以用(整数超过11位就不行了,此时小数只有第一位有值)
  onblur="if(isNaN(value))this.value='';else if(this.value!=''){if((Math.floor((parseFloat(value).toFixed(4))*10000)-(Math.floor(value*10000))==0) && (Math.round((value*100000)%10)==5)) value=Math.floor(value*10000+1)/10000; else value=parseFloat(value).toFixed(4);} 
//////方案二:无视有限数据长度,转为字符串进行分类归纳 
onblur="if(isNaN(value))this.value='';
      else if(this.value!=''){
       if(this.value.indexOf('.')==-1)value=value+'.00000';
       var str_before = value.split('.')[0];
       if(str_before=='')str_before=0;
       str_before = Math.round(str_before);
       var str_after = value.split('.')[1]+'00000';
       if(str_after=='')str_after='00000';
       str2 = str_after.charAt(4);
       if(str2>4 && str_after.slice(0,4)<9999)
       this.value=(str_before+'.'+(Math.round(str_after.slice(0,4))+1));
       if(str2>4 && str_after.slice(0,4)==9999)
       this.value=((Math.round(str_before)+1)+'.0000');
       if(str2<5)
       this.value=(str_before+'.'+str_after.slice(0,4));
       if(this.value.split('.')[0].length>11){
       layer.msg('长度超过数据存储上限!');
       this.value='';
       }
      } "

 

onblur="if(isNaN(value))this.value='';       else if(this.value!='' &&  value.split('.')[0].length>11){        layer.msg('长度超过数据存储上限!');        this.value='';       }       else if(this.value!=''){        var str_before = value.split('.')[0];        if(str_before=='')str_before=0;        var str_after = value.split('.')[1]+'00000';        if(str_after=='')str_after='00000';        str2 = str_after.charAt(4);        if(str2>4 && str_after.slice(0,4)<9999)        this.value=(str_before+'.'+(Math.round(str_after.slice(0,4))+1));        if(str2>4 && str_after.slice(0,4)==9999)        this.value=((Math.round(str_before)+1)+'.0000');        if(str2<5)        this.value=(str_before+'.'+str_after.slice(0,4));       } "      />

1)数据进来,首先确保是数字,如果因为输入法等原因进来的不是数字,则需要通过 onblur进行校验,如果不是数字,清空 2)toFixed是个好方法,可以进行数据的小数位数控制,但并不是单纯的截取(toFixed之后的数据减去一个同长度的值就可以看的出来) 3)toFixed对于尾数是5的处理无法精准处理,需要特殊加工,进行场景分类归纳处理
js
中的数据类型及其转换

Js中的数据类型

Js中的数据类型一共有六种,即number,string,boolean,underfine,null,object。

一,number

Number数据类型指的是数字,可以为整型,也可以是浮点数。如

vara=12,b=12.5;

 

 

二,string

字符串由零个或多个字符构成,字符包括字母,数字,标点符号和空格;需要注意的是

字符串必须放在引号里(单引号或双引号);

 

varbob=”man”;
 
alert(“bob”);
 
alert(bob);

浏览器首先会弹出包含有“bob”的字符串,然后弹出包含有“man”的字符串,前者是直接弹出字符串,后者则是弹出变量的值。

三,boolean

布尔型数据只能有两种值和 false,在js中true和false是关键字。通常,我们设置布尔值时多用于条件的判断。如:

 

varflag=true;
 
if(flag){
 
//js 代码
 
}

在条件判断语句中我们将所有的判断条件看做一个布尔值(这里需要了解一些布尔值的转换特性)。

四,underfine

underfine通常指的是没有赋值的变量,通过typeof可以对数据的类型进行判断。如

 

vara,b=underfine;
 
alert(a);
 
alert(typeofa);

两次结果都为underfine。

五,null

null是一个只有一个值的特殊类型。表示一个空对象引用。如:

var a=null;

将a清空。

六,object

对象就是由一些彼此相关的属性和方法集合在一起而构成的一个数据实体。常见的对象有array,window,document等。

例:

 

vartoday = newDate();
 
varyear = today.getFullYear();
 
varmonth = today.getMonth() + 1;
 
varday = today.getDay();

通过创建对象实例就可以调用对象的方法了,如上就是创建了一个Date的对象实例today,today通过调用Date的方法得出了现在的年月日等信息。

数组array是作为经常使用的对象,是由多个 (键-值) 所组成的一个多容器。其索引 默认是从0开始的。创建数组有两种方法:1创建数组对象实例 var arr=newArray(1,2,3);2直接使用面向字面量 var a=[1,2,3];

 

<script  type="text/javascript">
 
date=newDate();
 
day=date.getDay();
 
weekly=["星期天","星期一","星期二","星期三","星期四","星期五","星期六"]
 
        document.write("today  is "+weekly[day]+"<br>");
 
</script>

结果将输出今天是礼拜几。

数据类型的查看与转换

在js中我们经常需要知道某些变量的数据类型,并将其转换为我们所需要的数据类型。

通常,我们判断变量的数据类型会用到标识符typeof,如:

 

varmood = "happy";
 
alert(typeofmood);
 
alert(typeof95);

 

通过标识符,我们可以很快获取数据的类型;

数据的转换中,我们经常用到的是将变量转换成字符串或数字。

转换成字符串要使用toString(),例

 

varmarried = false;
 
alert(married.toString());

 

转换成数字时,有两种方法,parseInt() 转换成整数,parseFloat()转换成浮点数。

例:

   

vartest = parseInt(“blue”); //returns NaN
 
vartest = parseInt(“1234blue”); //returns  1234
 
vartest = parseInt(“22.5”); //returns 22
 
vartest = parseFloat(“1234blue”); //returns  1234
 
vartest = parseFloat(“22.5”); //returns 22.5