因项目需要,查阅资料后总结,终于测试成功了,因为手写,可能还会有很大地方不是很理想,谁有好的建议,可以一起讨论讨论。
代码附上:
html:
<input id="input" type="text" /><br /><br /><br /> <label><input name="Fruit" type="radio" value="0.18" checked="checked" />计划120天/预计年化收益18% </label> <br /> <label><input name="Fruit" type="radio" value="0.16" />计划90天/预计年化收益16% </label> <br /> <label><input name="Fruit" type="radio" value="0.12" />计划60天/预计年化收益12% </label> <br /> <label><input name="Fruit" type="radio" value="0.10" />计划30天/预计年化收益10% </label><br /><br /> <span></span>
$(function(){ $("input").keyup(function(){ var txt=parseInt($("input").val()); var rate=$("input[type='radio']:checked").attr("value"); var i=accMul(txt,rate); $("span").text(i); }) $("input[type='radio']").click(function(){ var txt=parseInt($("input").val()); var rate=$(this).attr("value"); var i=accMul(txt,rate); $("span").text(i); }) }) function accMul(arg1,arg2) { var m=0,s1=arg1.toString(),s2=arg2.toString(); try{m+=s1.split(".")[1].length}catch(e){} try{m+=s2.split(".")[1].length}catch(e){} return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m); }
修改过的js如下:
$(function(){ $("input").keyup(function(){ var txt_nosp=Trim($("#input").val(),'g'); //去除输入中的空格(左、中、右) var txt=parseInt(txt_nosp); var rate=$("input[type='radio']:checked").attr("value"); var i=accMul(txt,rate); $("#all").text((txt + i).toFixed(2)); //保留两位小数 $("#interest").text(i); }) $("input[type='radio']").click(function(){ if($input.val()==""){ //判断输入框是否有值,没有输入数字时,下方本息处显示0 $("#all").text("0"); $("#interest").text("0"); }else{ var txt_nosp=Trim($("#input").val(),'g'); var txt=parseInt(txt_nosp); var rate=$(this).attr("value"); var i=accMul(txt,rate); $("#all").text((txt + i).toFixed(2)); $("#interest").text(i); } }) }) //去除空格 function Trim(str,is_global) { var result; result = str.replace(/(^\s+)|(\s+$)/g,""); if(is_global.toLowerCase()=="g") result = result.replace(/\s/g,""); return result; } function accMul(arg1,arg2) { var m=0,s1=arg1.toString(),s2=arg2.toString(); try{m+=s1.split(".")[1].length}catch(e){} try{m+=s2.split(".")[1].length}catch(e){} return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m); }