2016-04-05 21 views
0

キーボードの入力作業に問題があったため、別のキーを「mousedown」と「keydown」に分けなければならなかったそれを機能させる。最後の問題は、アスタリスクを入力すると(同じボタンにある)8が乗算(*)されることです。JS:キーボード入力:「*」(多重符号)を入力するときに「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); 
    } 
    }); 

}); 
+2

1.5-1.3が0.2を与えない理由についての質問に答えるには:http://floating-point-gui.de/basic/ – digglemister

答えて

1

にShiftキーが押されていないときは、 "8" にのみ追加されていることを確認することができます。

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

event.shiftKeyは、イベントが発生したときにシフトがダウンしているかどうかを知るためのブール値です。

+0

完全に動作します。ありがとう! – Apswak