繁体   English   中英

JS:键盘输入:输入“ *”(乘号)时,禁止输入“ 8”

[英]JS: Keyboard input: Disable “8” from inputting when entering “ * ” (multiply sign)

我在使键盘输入正常工作时遇到了麻烦,我什至不得不将不同的键分开为“ mousedown”和“ keydown”,以使其正常工作。 现在最后的问题是,当输入星号乘以(*)时,也将输入8(位于同一按钮上)。

我该如何解决?

我在这里的时候很少有奖金:有人知道为什么1.5-1.3 = 0.19999(rec)吗?

http://codepen.io/kreitzo/pen/RapEqp

html

<div id="calculator">
  <div id="screen">
    <div id="calc">0</div>
    <div id="result">0</div>
  </div>
  <button class="value">1</button><button class="value">2</button><button class="value">3</button><button class="value">+</button><button class="value">4</button><button class="value">5</button><button class="value">6</button><button class="value">-</button><button class="value">7</button><button class="value">8</button><button class="value">9</button><button class="value">*</button><button class="value">.</button><button class="value">0</button><button class="CE">   &larr;</button><button class="value">/</button><button class="equals">=</button><button class="C">C</button>

</div>

js

$(document).ready(function() {

  var string = "";

  /* Calculator input string */
  $(".value").mousedown(function() {
    string += $(this).text();
    $("#calc").text(string);
  });
  /* Clear all */
  $(".C").click(function() {
    string = "";
    $("#calc, #result").text("0");
  });
  /* Clear last entry */
  $(".CE").click(function() {
    string = string.slice(0, string.length - 1);
    $("#calc").text(string);
  });

  /* Show result */
  $(".equals").click(function() {
    $("#result").text(eval(string));
  });

  /* Enabling keyboard input */

  $(document).keydown(function(event) {

    /* Numbers 0 - 9 */
    if (event.which == 48) {
      string += 0;
      $("#calc").text(string);
    }
    if (event.which == 49) {
      string += 1;
      $("#calc").text(string);
    }
    if (event.which == 50) {
      string += 2;
      $("#calc").text(string);
    }
    if (event.which == 51) {
      string += 3;
      $("#calc").text(string);
    }
    if (event.which == 52) {
      string += 4;
      $("#calc").text(string);
    }
    if (event.which == 53) {
      string += 5;
      $("#calc").text(string);
    }
    if (event.which == 54) {
      string += 6;
      $("#calc").text(string);
    }
    if (event.which == 55) {
      string += 7;
      $("#calc").text(string);
    }
    if (event.which == 56) {
      string += 8;
      $("#calc").text(string);
    }
    if (event.which == 57) {
      string += 9;
      $("#calc").text(string);
    }
    /* Show result with enter */
    if (event.which == 13) {
      $("#result").text(eval(string));
    }
    /* Backspace remove last entry */
    if (event.which == 8) {
      string = string.slice(0, string.length - 1);
      $("#calc").text(string);
    }
    /* Clear all with escape */
    if (event.which == 27) {
      string = "";
      $("#calc, #result").text("0");
    }

  });

  $(document).keypress(function(event) {
    /* Start of operators */
    if (event.which == 43) {
      string += '+';
      $("#calc").text(string);
    }
    if (event.which == 45) {
      string += "-";
      $("#calc").text(string);
    }
    if (event.which == 42) {
      string += "*";
      $("#calc").text(string);
    }
    if (event.which == 47) {
      string += "/";
      $("#calc").text(string);
    }
    if (event.which == 46) {
      string += ".";
      $("#calc").text(string);
    }
  });

});

您可以确保仅在不按下Shift键的情况下才添加“ 8”:

if (event.which == 56 && !event.shiftKey) {
    string += 8;
    $("#calc").text(string);
}

event.shiftKey是一个布尔值,可让您知道事件触发时shift是否向下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM