基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
之前发布了一款简易的计算器,今天做了一下修改,添加了键盘监听事件,不用再用鼠标点点点啦
JS代码:
varyunSuan=0;//运算符号,0-无运算;1-加法;2-减法;3-乘法;4-除法
varchange=0;//属于运算符后需要清空上一数值
varnum1=0;//运算第一个数据
varnum2=0;//运算第二个数据
varcunChuValue=0;//存储的数值
$(function(){
$(".number").click(function(){//点击数字触发事件
varnum=$(this).attr('name');
varoldValue=$("#jieguo").html();
if(change==1){
oldValue="0";
change=0;
}
varnewValue="";
if(num==-1){
oldValue=parseFloat(oldValue);
newValue=oldValue*-1;
}elseif(num=="."){
if(oldValue.indexOf('.')==-1)
newValue=oldValue+".";
else
newValue=oldValue;
}else{
if(oldValue==0&&oldValue.indexOf('.')==-1){
newValue=num;
}else{
newValue=oldValue+num;
}
}
$("#jieguo").html(newValue);
});
$("#qingPing").click(function(){//点击清屏触发事件
$("#jieguo").html("0");
yunSuan=0;
change=0;
num1=0;
num2=0;
});
$("#tuiGe").click(function(){//点击退格触发事件
if(change==1){
yunSuan=0;
change=0;
}
varvalue=$("#jieguo").html();
if(value.length==1){
$("#jieguo").html("0");
}else{
value=value.substr(0,value.length-1);
$("#jieguo").html(value);
}
});
$(".yunSuan").click(function(){//点击运算符号触发事件
change=1;
yuSuan=$(this).attr('name');
varvalue=$("#jieguo").html();
vardianIndex=value.indexOf(".");
if(dianIndex==value.length){
value=value.substr(0,value.length-1);
}
num1=parseFloat(value);
});
$("#dengYu").click(function(){//点击等于符号触发事件
varvalue=$("#jieguo").html();
vardianIndex=value.indexOf(".");
if(dianIndex==value.length){
value=value.substr(0,value.length-1);
}
num2=parseFloat(value);
varsum=0;
if(yuSuan==1){
sum=num1+num2;
}elseif(yuSuan==2){
sum=num1-num2;
}elseif(yuSuan==3){
sum=num1*num2;
}elseif(yuSuan==4){
sum=num1/num2;
}elseif(yuSuan==0||num1==0||num2==0){
sum=num1+num2;
}
varre=/^[0-9]+.?[0-9]*$/;
if(re.test(sum)){
sum=sum.toFixed(2);
}
$("#jieguo").html(sum);
change=1;
yuSuan=0;
num1=0;
num2=0;
});
$("#cunChu").click(function(){//点击存储触发事件
change=1;
varvalue=$("#jieguo").html();
vardianIndex=value.indexOf(".");
if(dianIndex==value.length){
value=value.substr(0,value.length-1);
}
cunChuValue=parseFloat(value);
});
$("#quCun").click(function(){//点击取存触发事件
change=1;
$("#jieguo").html(cunChuValue);
});
$("#qingCun").click(function(){//点击清存触发事件
change=1;
cunChuValue=0;
});
$("#leiCun").click(function(){//点击累存触发事件
change=1;
varvalue=$("#jieguo").html();
vardianIndex=value.indexOf(".");
if(dianIndex==value.length){
value=value.substr(0,value.length-1);
}
cunChuValue+=parseFloat(value);
});
$("#jiCun").click(function(){//点击积存触发事件
change=1;
varvalue=$("#jieguo").html();
vardianIndex=value.indexOf(".");
if(dianIndex==value.length){
value=value.substr(0,value.length-1);
}
if(cunChuValue==0){
cunChuValue=parseFloat(value);
}else{
cunChuValue=cunChuValue*parseFloat(value);
}
});
});
//按键监听
$(document)
.keydown(
function(event){
//数字监听
if(((event.keyCode>47&&event.keyCode<58)
||(event.keyCode>95&&event.keyCode<106)||(event.keyCode==190||event.keyCode==110))
&&!event.shiftKey){
keyDownNum(event.keyCode);
}
//"+"监听
if((event.keyCode==187&&event.shiftKey)
||event.keyCode==107){
keyDownYuSuan(1);
}
//"-"监听
if((event.keyCode==189&&event.shiftKey)
||event.keyCode==109){
keyDownYuSuan(2);
}
//"*"监听
if((event.keyCode==56&&event.shiftKey)
||event.keyCode==106){
keyDownYuSuan(3);
}
//"/"监听
if(event.keyCode==191||event.keyCode==111){
keyDownYuSuan(4);
}
//"="监听
if((event.keyCode==187&&!event.shiftKey)
||event.keyCode==13){
$("#dengYu").click();
}
//"回退"监听
if(event.keyCode==8){
$("#tuiGe").click();
returnfalse;
}
//"清屏"监听
if(event.keyCode==27||event.keyCode==46
||(event.keyCode==110&&event.shiftKey)){
$("#qingPing").click();
returnfalse;
}
//"存储"监听
if(event.keyCode==112){
$("#cunChu").click();
returnfalse;
}
//"取存"监听
if(event.keyCode==113){
$("#quCun").click();
returnfalse;
}
//"累存"监听
if(event.keyCode==114){
$("#leiCun").click();
returnfalse;
}
//"积存"监听
if(event.keyCode==115){
$("#jiCun").click();
returnfalse;
}
//"清存"监听
if(event.keyCode==117){
$("#qingCun").click();
returnfalse;
}
});
/**
*按键触发运算符value1-'+'2-'-'3-'*'4-'/'
*/
functionkeyDownYuSuan(value){
change=1;
yuSuan=value;
varvalue=$("#jieguo").html();
vardianIndex=value.indexOf(".");
if(dianIndex==value.length){
value=value.substr(0,value.length-1);
}
num1=parseFloat(value);
}
/**
*按键触发数字codeASCLL码
*/
functionkeyDownNum(code){
varnumber=0;
if(code==48||code==96){//"0"监听
number=0;
}
if(code==49||code==97){//"1"监听
number=1;
}
if(code==50||code==98){//"2"监听
number=2;
}
if(code==51||code==99){//"3"监听
number=3;
}
if(code==52||code==100){//"4"监听
number=4;
}
if(code==53||code==101){//"5"监听
number=5;
}
if(code==54||code==102){//"6"监听
number=6;
}
if(code==55||code==103){//"7"监听
number=7;
}
if(code==56||code==104){//"8"监听
number=8;
}
if(code==57||code==105){//"9"监听
number=9;
}
if(code==190||code==110){//"."监听
number=".";
}
varnum=number;
varoldValue=$("#jieguo").html();
if(change==1){
oldValue="0";
change=0;
}
varnewValue="";
if(num==-1){
oldValue=parseFloat(oldValue);
newValue=oldValue*-1;
}elseif(num=="."){
if(oldValue.indexOf('.')==-1)
newValue=oldValue+".";
else
newValue=oldValue;
}else{
if(oldValue==0&&oldValue.indexOf('.')==-1){
newValue=num;
}else{
newValue=oldValue+num;
}
}
$("#jieguo").html(newValue);
}
HTML/CSS代码:
<%@pagelanguage="java"contentType="text/html;charset=UTF-"
pageEncoding="UTF-"%>
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-">
<title>简易计算器</title>
<jsp:includepage="inc/easyui.jsp"></jsp:include>
<styletype="text/css">
button{
font-size:px;
font-weight:bold;
width:px;
}
</style>
<scripttype="text/javascript"src="js.js"></script>
</head>
<body>
<table>
<tr>
<tdcolspan="">
<divid="jieguo"
style="width:px;height:px;font-size:px;text-align:right;font-weight:bold;color:red;"></div>
</td>
</tr>
<trstyle="height:px;">
<td>
<buttonid="cunChu">存储(F)</button></td>
<td>
<buttonid="quCun">取存(F)</button></td>
<td>
<buttonid="tuiGe"> 退 格 </button></td>
<td>
<buttonid="qingPing"> 清 屏 </button></td>
</tr>
<trstyle="height:px;">
<td>
<buttonid="leiCun">累存(F)</button></td>
<td>
<buttonid="jiCun">积存(F)</button></td>
<td>
<buttonid="qingCun">清存(F)</button></td>
<td>
<buttonid="Chuyi"class="yunSuan"name=""> ÷ </button>
</td>
</tr>
<trstyle="height:px;">
<td>
<buttonid="seven"class="number"name=""> </button>
</td>
<td>
<buttonid="eight"class="number"name=""> </button>
</td>
<td>
<buttonid="nine"class="number"name=""> </button>
</td>
<td>
<buttonid="chengYi"class="yunSuan"name=""> × </button>
</td>
</tr>
<trstyle="height:px;">
<td>
<buttonid="four"class="number"name=""> </button>
</td>
<td>
<buttonid="five"class="number"name=""> </button>
</td>
<td>
<buttonid="six"class="number"name=""> </button>
</td>
<td>
<buttonid="jianQu"class="yunSuan"name=""> - </button>
</td>
</tr>
<trstyle="height:px;">
<td>
<buttonid="one"class="number"name=""> </button>
</td>
<td>
<buttonid="two"class="number"name=""> </button>
</td>
<td>
<buttonid="three"class="number"name=""> </button>
</td>
<td>
<buttonid="jiaShang"class="yunSuan"name=""> + </button>
</td>
</tr>
<trstyle="height:px;">
<td>
<buttonid="zero"class="number"name=""> </button>
</td>
<td>
<buttonid="dian"class="number"name="."> . </button>
</td>
<td>
<buttonid="zhengFu"class="number"name="-"> +/- </button>
</td>
<td>
<buttonid="dengYu"> = </button></td>
</tr>
</table>
</body>
</html>
计算器样式布局时借鉴别人的,但是代码均是本人自己写的,由于时间原因没有来得及测试,各位大侠在使用过程中发现有bug欢迎提出,共同学习进步,谢谢。