<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>我的计算器</title>
<style>
*{margin:0px; padding:0px;}
#jsq{
width:300px;
height:330px;
background:#CCC;
margin:0 auto;
margin-top:10%;
}
#showv{width:298px;height:50px;display:block; font-size:16px; line-height:50px;}
input{width:56px; height:56px;margin-top:10px;}
</style>
<script type="text/javascript" src="CalcEval.js"></script>
</head>
<body>
<div id="jsq">
<input type='text' id="showv"/>
<input type="button" value="7" onClick="jsq(this.value);" />
<input type="button" value="8" onClick="jsq(this.value);"/>
<input type="button" value="9" onClick="jsq(this.value);"/>
<input type="button" value="back" onClick="tuige();"/>
<input type="button" value="C" onClick="qingling();"/>
<input type="button" value="4" onClick="jsq(this.value);"/>
<input type="button" value="5" onClick="jsq(this.value);"/>
<input type="button" value="6" onClick="jsq(this.value);"/>
<input type="button" value="*" onClick="jsq(this.value);"/>
<input type="button" value="/" onClick="jsq(this.value);"/>
<input type="button" value="1" onClick="jsq(this.value);"/>
<input type="button" value="2" onClick="jsq(this.value);"/>
<input type="button" value="3" onClick="jsq(this.value);"/>
<input type="button" value="+" onClick="jsq(this.value);"/>
<input type="button" value="-" onClick="jsq(this.value);"/>
<input type="button" value="0" onClick="jsq(this.value);"/>
<input type="button" value="00" onClick="jsq(this.value);"/>
<input type="button" value="." onClick="jsq(this.value);"/>
<input type="button" value="%" onClick="jsq(this.value);"/>
<input type="button" value="=" onClick="dengyu();"/>
</div>
<script>
var cal = new CalcEval();
var showv=document.getElementById('showv');
showv.focus();
function jsq(v){
a=showv.value.substr(-1,1);
zz1=/^[0-9]$/;
//重复运算符
if(!zz1.test(a)&&!zz1.test(v)){
console.log('请输入正确格式');
return false;
}
str=showv.value+v;
var zz2=/^[0]+/;
//多个0
if(zz2.test(str)){
str=str.replace(zz2,0);
}
//运算符之后的多个0
var zz3=/[+\-*\/%]{1}[0]{2}/;
if(zz3.test(str)){
str=str.substr(0,str.length-1);
}
//开始多个点0.0.0.01
var zz4=/^[0-9]+\.[0-9]+\.{1,}/;
if(zz4.test(str)){
str=str.substr(0,str.length-1);
}
//运算符之后多给点
var zz5=/[+\-*\/%][0-9]+\.[0-9]+\.{1,}/;
if(zz5.test(str)){
str=str.substr(0,str.length-1);
}
//开始为0
var zz6=/^[0]{1}[0-9]{1,}/;
if(zz6.test(str)){
str=str.substr(1,str.length-1);
}
//运算符之后为0开始
var zz7=/[+\-*\/%][0]{1}[0-9]{1,}/;
if(zz7.test(str)){
str=str.substr(0,str.length-2)+str.substr(-1,1);
}
showv.value=str;
}
function dengyu(){
var zz=/^[+\-*\/%\.]+$/;
var a=showv.value.substr(-1,1);
if(zz.test(a)){//最后输入的是运算符
showv.value=showv.value.substr(0,showv.value.length-1);
}
showv.value=cal.eval(showv.value);
showv.focus();
}
function qingling(){
showv.value="";
showv.focus();
}
function tuige(){
showv.value=showv.value.substr(0,showv.value.length-1);
showv.focus();
}
//键盘输入 步骤同上
document.onkeyup=function key(a){
var str = showv.value;
var zz = /[^+\-*\/%\.0-9]{1,}/;
str = str.replace(zz,"");
var zz2 = /[+\-*\/%\.][+\-*\/%\.]{1,}/;
var arr = str.match(zz2);
if(arr!=null){
str = str.replace(zz2,arr[0].substr(0,1));
}
var zz3 = /^[0][0]{1,}/;
str = str.replace(zz3,0);
var zz4 = /[+\-*\/%][0][0]{1,}/;
var arr4 = str.match(zz4);
if(arr4!=null){
str = str.replace(zz4,arr4[0].substr(0,2));
}
var zz5 = /[0-9]+\.[0-9]+\.{1,}/;
var arr5 = str.match(zz5);
if(arr5!=null){
str = str.replace(zz5,arr5[0].substr(0,arr5[0].length-1));
}
var zz6 = /[0][1-9]{1,}/;
var arr6 = str.match(zz6);
if(arr6!=null){
str = str.replace(zz6,arr6[0].substr(1,arr6[0].length));
}
showv.value = str;
if(a.keyCode==13){
dengyu();
}
}
</script>
</body>
</html>