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

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

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代码:

  1 <%@ page language="java" contentType="text/html; charset=UTF-8"
  2     pageEncoding="UTF-8"%>
  3 <!DOCTYPE html>
  4 <html>
  5 <head>
  6 <meta charset=" utf-8">
  7 <title>简易计算器</title>
  8 <jsp:include page="inc/easyui.jsp"></jsp:include>
  9 <style type="text/css">
 10 button {
 11     font-size: 18px;
 12     font-weight: bold;
 13     width: 90px;
 14 }
 15 </style>
 16 <script type="text/javascript" src="js.js"></script>
 17 </head>
 18 <body>
 19     <table>
 20         <tr>
 21             <td colspan="4">
 22                 <div id="jieguo"
 23                     style="width: 370px;height: 30px;font-size: 30px;text-align: right;font-weight:bold;color: red;">0</div>
 24             </td>
 25         </tr>
 26         <tr style="height: 40px;">
 27             <td>
 28                 <button id="cunChu">存储(F1)</button></td>
 29             <td>
 30                 <button id="quCun">取存(F2)</button></td>
 31             <td>
 32                 <button id="tuiGe">&nbsp;退&nbsp;格&nbsp;</button></td>
 33             <td>
 34                 <button id="qingPing">&nbsp;清&nbsp;屏&nbsp;</button></td>
 35         </tr>
 36         <tr style="height: 40px;">
 37             <td>
 38                 <button id="leiCun">累存(F3)</button></td>
 39             <td>
 40                 <button id="jiCun">积存(F4)</button></td>
 41             <td>
 42                 <button id="qingCun">清存(F6)</button></td>
 43             <td>
 44                 <button id="Chuyi" class="yunSuan" name="4">&nbsp;&nbsp;÷&nbsp;&nbsp;</button>
 45             </td>
 46         </tr>
 47         <tr style="height: 40px;">
 48             <td>
 49                 <button id="seven" class="number" name="7">&nbsp;&nbsp;7&nbsp;&nbsp;</button>
 50             </td>
 51             <td>
 52                 <button id="eight" class="number" name="8">&nbsp;&nbsp;8&nbsp;&nbsp;</button>
 53             </td>
 54             <td>
 55                 <button id="nine" class="number" name="9">&nbsp;&nbsp;9&nbsp;&nbsp;</button>
 56             </td>
 57             <td>
 58                 <button id="chengYi" class="yunSuan" name="3">&nbsp;&nbsp;×&nbsp;&nbsp;</button>
 59             </td>
 60         </tr>
 61         <tr style="height: 40px;">
 62             <td>
 63                 <button id="four" class="number" name="4">&nbsp;&nbsp;4&nbsp;&nbsp;</button>
 64             </td>
 65             <td>
 66                 <button id="five" class="number" name="5">&nbsp;&nbsp;5&nbsp;&nbsp;</button>
 67             </td>
 68             <td>
 69                 <button id="six" class="number" name="6">&nbsp;&nbsp;6&nbsp;&nbsp;</button>
 70             </td>
 71             <td>
 72                 <button id="jianQu" class="yunSuan" name="2">&nbsp;&nbsp;-&nbsp;&nbsp;</button>
 73             </td>
 74         </tr>
 75         <tr style="height: 40px;">
 76             <td>
 77                 <button id="one" class="number" name="1">&nbsp;&nbsp;1&nbsp;&nbsp;</button>
 78             </td>
 79             <td>
 80                 <button id="two" class="number" name="2">&nbsp;&nbsp;2&nbsp;&nbsp;</button>
 81             </td>
 82             <td>
 83                 <button id="three" class="number" name="3">&nbsp;&nbsp;3&nbsp;&nbsp;</button>
 84             </td>
 85             <td>
 86                 <button id="jiaShang" class="yunSuan" name="1">&nbsp;&nbsp;+&nbsp;&nbsp;</button>
 87             </td>
 88         </tr>
 89         <tr style="height: 40px;">
 90             <td>
 91                 <button id="zero" class="number" name="0">&nbsp;&nbsp;0&nbsp;&nbsp;</button>
 92             </td>
 93             <td>
 94                 <button id="dian" class="number" name=".">&nbsp;&nbsp;.&nbsp;&nbsp;</button>
 95             </td>
 96             <td>
 97                 <button id="zhengFu" class="number" name="-1">&nbsp;&nbsp;+/-&nbsp;&nbsp;</button>
 98             </td>
 99             <td>
100                 <button id="dengYu">&nbsp;&nbsp;=&nbsp;&nbsp;</button></td>
101         </tr>
102     </table>
103 </body>
104 </html>

计算器样式布局有所借鉴,代码均为原创,未经授权禁止转载;内容未经过严格测试,如遇BUG欢迎提出,谢谢!

时间: 2024-10-13 12:18:05

使用HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)的相关文章

Java(随笔)——利用HTML,CSS,JavaScript,JQuery编写的简易计算器

一.利用刚学过的前端知识做一个简易的计算器里边使用到了HTML,CSS,JavaScript以及JQuery的知识代码如下:(1)利用CSS设计了计算器外形样式:(2)利用JavaScript实现了建议计算器的功能:代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>简易计算器</title> <link rel="styl

c语言:编写一个简易计算器,打印菜单界面,实现加减乘除运算,可以退出菜单界面

.编写一个简易计算器 程序: #include<stdio.h> enum  OP { EXIT,//0 ADD,//1 SUB,//2 MUL,//3 DIV//4 }; void menu()//menu表示菜单 { printf("**** 1.add  ****\n"); printf("**** 2.sub  ****\n"); printf("**** 3.mul  ****\n"); printf("**** 

自制简易jquery键盘监听插件

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <script> /** * 简易键盘监听事件 * @author shine.s */ var KeyListener = (function(){ var _debug = false; var _ups =

html、css、js实现简易计算器

学习HTML,CSS,JS一个月后,想着能自己是否能写出一个简单的东西,故编写了简易的计算器,之前也写过一个坦克大战,坦克大战的有些基本功能没有实现, 故也没有记录下来,想来,对这行初来咋到的,还是需要留下些东西供自己日后回忆,于是写下这篇随笔:因第一次写博客,不知道怎么上传源代码,也不知道怎么在博客页面实现计算效果. 下面是完成后计算器页面: 该计算器只是实现了简易的计算功能,很多其他功能没有实现,如运算的优先级功能,在后面的学习中再慢慢改进吧! 因计算器布局比较规整,故用table表格布局,

JavaScript 编写的简易计算器

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>javascript 简单计算器</title> <script> //定义全局变量 var one="1"; var two="2&quo

单片机: 简易计算器的实现(键盘)

利用矩阵键盘实现一个简易的计算器. 为了简化问题,我们假设只支持小于100的非负整数之间的加.减.乘的运算,并且支持连续运算(结果的数值可以再进行运算). 本程序中C为加号,D为减号,E为乘号,F为等于号. 代码中有详细的注释. /* 注:本程序 C 为+, D 为- E为* F 为=号,支持非负整数连续运算. 输入的数值小于100,运算结果不超过1000. by Tach ------------------------------------------------*/ #include<r

jquery实现导航启用数字键盘监听效果

今天写一个案例:就是导航可以用数字键盘来监听,也就是点击数字键盘相应的导航触发并且出现相应的样式.来看代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{margin:0;padding:0;} ul,li{list-style: none}

用Java语言编写一个简易画板

讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目需要满足怎样的需求. 那么,画板需要满足怎样的需要呢?换句话说,在画板上,我们应该赋予它什么功能呢?从我们熟悉的画板来看,我们需要实现诸如铅笔.橡皮.喷枪.刷子的功能,我们可以画出一些规则的图形,比如直线.矩形.圆.最好我们还能调整画笔的颜色和粗细.以上,我们希望的是,当我们点击一个按钮的时候,我们

js css 实现简易计算器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-