2015-06-04 2 views
2

В настоящее время я решаю задачу для калькулятора в jQuery, и у меня есть эта проблема: Я хочу, чтобы кнопки моего калькулятора работали только с клавиатурой: как в - если я нажимаю кнопку цифра 8 на клавиатуре, номер 8 будет отображаться на экране. Мне удалось сделать это со знаками (цифры от 0 до 9, символы (+ - * /)), но я не знаю, как я могу вызвать желаемое действие из символов с клавиатуры. Как я могу сделать ссылку.Я хочу связать ключи в jquery

$(document).ready(function() {  
      var $calc = $("#calculator"); 
      var $display = $("#display"); 
      var $numbers = $("#numbers button"); 
      var $operators = $("#operators button"); 
      var $colspan = $(".colspan"); 

      var init = 0; 
      var operand = init; 
      var operation = null; 
      var afterOperation = false; 

      var reset = function() { 
       $display.text(init); 
       operand = null; 
       operation = null; 
      } 

      $numbers.not($('#colspan')).click(function(event) { 
       event.preventDefault(); 
       var currValue = parseFloat($display.text()); 
       if(afterOperation == false) { 
        if($display.text() == init && $display.text().indexOf(',')<0) { 
         $display.text($(this).text()); 
        } else { 
        $display.append($(this).text()); 
        } 
       } else { 
        $display.text($(this).text()); 
        afterOperation = false; 
       } 
      }); 
      $(window).keypress(function(event) { 
         switch (event.key) { 
         case "1": 
           $display.append("1"); 
           break; 
         case "2": 
           $display.append("2"); 
           break; 
         case "3": 
           $display.append("3"); 
           break; 
         case "4": 
           $display.append("4"); 
           break; 
         case "5": 
           $display.append("5"); 
           break; 
         case "6": 
           $display.append("6"); 
           break; 
         case "7": 
           $display.append("7"); 
           break; 
         case "8": 
           $display.append("8"); 
           break; 
         case "9": 
           $display.append("9"); 
           break; 
         case "0": 
           $display.append("0"); 
           break; 
         case "+": 
           $display.append("+"); 
           break; 
                case "-": 
           $display.append("-"); 
           break;          
         case "/": 
           $display.append("/"); 
           break; 
         case "*": 
           $display.append("*"); 
           break;   
         case ",": 
           $display.append(","); 
           break;  
         case $.ui.keyCode.: 
    console.log("down"); 
    break;          
        } 
      }); 
      $operators.click(function(event) { 
       event.preventDefault(); 
       var currValue = $(this).text(); 
       var currOperand = parseFloat($display.text()); 
       if(currValue != 'CE') { 
       if(operation != null && !afterOperation){ 
        switch(operation) { 
         case '+': 
          $display.text(operand + currOperand); 
          break; 
         case '-': 
          $display.text(operand - currOperand); 
          break; 
         case '*': 
          $display.text(operand * currOperand); 
          break; 
         case '/': 
          if(currOperand != 0) { 
           $display.text(Number(operand/currOperand).toFixed(1)); 
          } else { 
           alert("ERROR"); 
           reset(); 
          } 
          break; 
         } 
        } 
       } 
       if(currValue != '=') { 
         operation = currValue; 
       } else { 
         operation = null; 
         afterOperation = false; 
         return; 
       } 
       if(currValue != 'C') { 
        operation = currValue; 
       } else { 
        $display.text(init); 
       } 
       if(currValue != '←') { 
        operation = currValue; 
       } else { 
        $display.text($display.text().substring(0,$display.text().length-1)); 
       } 
       if(operand = parseFloat($display.text())) { 
         afterOperation = true; 
       } else { 
        reset(); 
       } 

      }); 

Также я хотел бы заменить знак точки, отображаемый на экране калькулятора запятой (в моем коде HTML знак для цифр является запятой, но на экране он отображается как точка, и когда я пытаюсь добавлять/вычитать числа с цифрами запятая прыгали и результаты неверны) Помощь

+0

Почему бы просто не использовать поле ввода для этого? –

ответ

0

Может быть, вы не читаете правильные коды от входа Попробуйте:.?

$(window).keypress(function(a){ 
     $("#display").append((String.fromCharCode(a.which))); 
}) 
+0

Что я хочу сказать, я хочу связать операцию с операцией butoon: как при нажатии «=» мне нужно вернуть окончательное значение, когда я нажимаю «+», я хочу, чтобы код знал, что он должен сделать прибавление –

Смежные вопросы