基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)


Posted in Javascript onJanuary 05, 2016

之前发布了一款简易的计算器,今天做了一下修改,添加了键盘监听事件,不用再用鼠标点点点啦

JS代码:

var yunSuan = 0;// 运算符号,0-无运算;1-加法;2-减法;3-乘法;4-除法
var change = 0;// 属于运算符后需要清空上一数值
var num1 = 0;// 运算第一个数据
var num2 = 0;// 运算第二个数据
var cunChuValue = 0;// 存储的数值
$(function() {
$(".number").click(function() {// 点击数字触发事件
var num = $(this).attr('name');
var oldValue = $("#jieguo").html();
if (change == 1) {
oldValue = "0";
change = 0;
}
var newValue = "";
if (num == -1) {
oldValue = parseFloat(oldValue);
newValue = oldValue * -1;
} else if (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;
}
var value = $("#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');
var value = $("#jieguo").html();
var dianIndex = value.indexOf(".");
if (dianIndex == value.length) {
value = value.substr(0, value.length - 1);
}
num1 = parseFloat(value);
});
$("#dengYu").click(function() {// 点击等于符号触发事件
var value = $("#jieguo").html();
var dianIndex = value.indexOf(".");
if (dianIndex == value.length) {
value = value.substr(0, value.length - 1);
}
num2 = parseFloat(value);
var sum = 0;
if (yuSuan == 1) {
sum = num1 + num2;
} else if (yuSuan == 2) {
sum = num1 - num2;
} else if (yuSuan == 3) {
sum = num1 * num2;
} else if (yuSuan == 4) {
sum = num1 / num2;
} else if (yuSuan == 0 || num1 == 0 || num2 == 0) {
sum = num1 + num2;
}
var re = /^[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;
var value = $("#jieguo").html();
var dianIndex = 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;
var value = $("#jieguo").html();
var dianIndex = value.indexOf(".");
if (dianIndex == value.length) {
value = value.substr(0, value.length - 1);
}
cunChuValue += parseFloat(value);
});
$("#jiCun").click(function() {// 点击积存触发事件
change = 1;
var value = $("#jieguo").html();
var dianIndex = 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();
return false;
}
// "清屏"监听
if (event.keyCode == 27 || event.keyCode == 46
|| (event.keyCode == 110 && event.shiftKey)) {
$("#qingPing").click();
return false;
}
// "存储"监听
if (event.keyCode == 112) {
$("#cunChu").click();
return false;
}
// "取存"监听
if (event.keyCode == 113) {
$("#quCun").click();
return false;
}
// "累存"监听
if (event.keyCode == 114) {
$("#leiCun").click();
return false;
}
// "积存"监听
if (event.keyCode == 115) {
$("#jiCun").click();
return false;
}
// "清存"监听
if (event.keyCode == 117) {
$("#qingCun").click();
return false;
}
});
/**
* 按键触发运算符 value 1-'+' 2-'-' 3-'*' 4-'/'
*/
function keyDownYuSuan(value) {
change = 1;
yuSuan = value;
var value = $("#jieguo").html();
var dianIndex = value.indexOf(".");
if (dianIndex == value.length) {
value = value.substr(0, value.length - 1);
}
num1 = parseFloat(value);
}
/**
* 按键触发数字 code ASCLL码
*/
function keyDownNum(code) {
var number = 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 = ".";
}
var num = number;
var oldValue = $("#jieguo").html();
if (change == 1) {
oldValue = "0";
change = 0;
}
var newValue = "";
if (num == -1) {
oldValue = parseFloat(oldValue);
newValue = oldValue * -1;
} else if (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代码:

<%@ page language="java" contentType="text/html; charset=UTF-"
pageEncoding="UTF-"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-">
<title>简易计算器</title>
<jsp:include page="inc/easyui.jsp"></jsp:include>
<style type="text/css">
button {
font-size: px;
font-weight: bold;
width: px;
}
</style>
<script type="text/javascript" src="js.js"></script>
</head>
<body>
<table>
<tr>
<td colspan="">
<div id="jieguo"
style="width: px;height: px;font-size: px;text-align: right;font-weight:bold;color: red;"></div>
</td>
</tr>
<tr style="height: px;">
<td>
<button id="cunChu">存储(F)</button></td>
<td>
<button id="quCun">取存(F)</button></td>
<td>
<button id="tuiGe"> 退 格 </button></td>
<td>
<button id="qingPing"> 清 屏 </button></td>
</tr>
<tr style="height: px;">
<td>
<button id="leiCun">累存(F)</button></td>
<td>
<button id="jiCun">积存(F)</button></td>
<td>
<button id="qingCun">清存(F)</button></td>
<td>
<button id="Chuyi" class="yunSuan" name="">  ÷  </button>
</td>
</tr>
<tr style="height: px;">
<td>
<button id="seven" class="number" name="">    </button>
</td>
<td>
<button id="eight" class="number" name="">    </button>
</td>
<td>
<button id="nine" class="number" name="">    </button>
</td>
<td>
<button id="chengYi" class="yunSuan" name="">  ×  </button>
</td>
</tr>
<tr style="height: px;">
<td>
<button id="four" class="number" name="">    </button>
</td>
<td>
<button id="five" class="number" name="">    </button>
</td>
<td>
<button id="six" class="number" name="">    </button>
</td>
<td>
<button id="jianQu" class="yunSuan" name="">  -  </button>
</td>
</tr>
<tr style="height: px;">
<td>
<button id="one" class="number" name="">    </button>
</td>
<td>
<button id="two" class="number" name="">    </button>
</td>
<td>
<button id="three" class="number" name="">    </button>
</td>
<td>
<button id="jiaShang" class="yunSuan" name="">  +  </button>
</td>
</tr>
<tr style="height: px;">
<td>
<button id="zero" class="number" name="">    </button>
</td>
<td>
<button id="dian" class="number" name=".">  .  </button>
</td>
<td>
<button id="zhengFu" class="number" name="-">  +/-  </button>
</td>
<td>
<button id="dengYu">  =  </button></td>
</tr>
</table>
</body>
</html>

计算器样式布局时借鉴别人的,但是代码均是本人自己写的,由于时间原因没有来得及测试,各位大侠在使用过程中发现有bug欢迎提出,共同学习进步,谢谢。

Javascript 相关文章推荐
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
Aug 22 Javascript
通过jQuery源码学习javascript(一)
Dec 27 Javascript
js替代copy(示例代码)
Nov 27 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
Mar 25 Javascript
js点击button按钮跳转到另一个新页面
Oct 10 Javascript
如何让一个json文件显示在表格里【实现代码】
May 09 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
Jul 18 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
Nov 09 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
Jul 02 Javascript
vue将毫秒数转化为正常日期格式的实例
Sep 16 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 Javascript
uniapp引入支付宝原生扫码插件步骤详解
Jul 23 Javascript
JavaScript实现简单的tab选项卡切换
Jan 05 #Javascript
javascript实现简单的全选和反选功能
Jan 05 #Javascript
Javascript原型链的原理详解
Jan 05 #Javascript
深入浅析JavaScript系列(13):This? Yes,this!
Jan 05 #Javascript
基于javascript实现图片懒加载
Jan 05 #Javascript
this,this,再次讨论javascript中的this,超全面(经典)
Jan 05 #Javascript
基于javascript实现图片预加载
Jan 05 #Javascript
You might like
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
jquery div 居中技巧应用介绍
2012/11/24 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
vue组件实践之可搜索下拉框功能
2018/11/25 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
基于Python中的yield表达式介绍
2019/11/19 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
2020/03/10 Python
python实现简单学生信息管理系统
2020/04/09 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
运动会邀请函范文
2014/02/06 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
《七颗钻石》教学反思
2014/02/28 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
干部作风建设工作总结
2014/10/29 职场文书
2015年度企业工作总结
2015/05/21 职场文书
深入理解Pytorch微调torchvision模型
2021/11/11 Python