-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
103 lines (84 loc) · 4.15 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<!DOCTYPE html>
<!--the HTML's language-->
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title> Calculator </title>
<!--links to (my) external CSS file-->
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<div class="calculator" id="calculator">
<form id="calculator-form">
<div class="display">
<!-- displays the calc. result -->
<input type="text" name="display" readonly> <!-- prevents keyboard from constantly popping up on mobile view -->
</div>
<div>
<input type="button" id="acde" value="AC" onclick="display.value = '' " class="operator"> <!--ALL CLEAR-->
<input type="button" id="acde" value="DE" onclick="display.value = display.value.toString().slice(0,-1)" class="operator"> <!--DELETE (ONE KEY)-->
<input type="button" value="." onclick="display.value += '.' " class="operator dot-button">
<input type="button" value="/" onclick="display.value += '/' " class="operator">
</div>
<div>
<input type="button" value="7" onclick="display.value += '7' ">
<input type="button" value="8" onclick="display.value += '8' ">
<input type="button" value="9" onclick="display.value += '9' ">
<input type="button" value="*" onclick="display.value += '*' " class="operator"> <!--MULTIPLY-->
</div>
<div>
<input type="button" value="4" onclick="display.value += '4' ">
<input type="button" value="5" onclick="display.value += '5' ">
<input type="button" value="6" onclick="display.value += '6' ">
<input type="button" value="-" onclick="display.value += '-' " class="operator minus-button"> <!--SUBTRACT-->
</div>
<div>
<input type="button" value="1" onclick="display.value += '1' ">
<input type="button" value="2" onclick="display.value += '2' ">
<input type="button" value="3" onclick="display.value += '3' ">
<input type="button" value="+" onclick="display.value += '+' " class="operator"> <!--ADD-->
</div>
<div>
<input type="button" value="00" onclick="display.value += '00' ">
<input type="button" value="0" onclick="display.value += '0' ">
<!-- evaluates the content written in the input field -->
<input type="button" value="=" onclick="display.value = eval(display.value)" class="equal operator">
</form>
</div>
</div>
<script>
// FOR KEYBOARD INTERACTION
document.addEventListener('DOMContentLoaded', function () {
const calculatorForm = document.getElementById('calculator-form');
const displayInput = calculatorForm.display;
// Function to update the display with the pressed key
function updateDisplay(key) {
displayInput.value += key;
}
// Function to handle the key presses
function handleKeyPress(event) {
const key = event.key;
const allowedKeys = /[0-9+\-*/.=]|Backspace|Delete|Enter/;
if (!allowedKeys.test(key)) return;
event.preventDefault();
if (key === 'Enter' || key === '=') {
displayInput.value = eval(displayInput.value);
} else if (key === 'Backspace' || key === 'Delete') {
displayInput.value = displayInput.value.slice(0, -1);
} else {
updateDisplay(key);
}
}
// Add event listeners to the form for keyboard input
calculatorForm.addEventListener('keydown', handleKeyPress);
// Focus the input field when the calculator is clicked, so keyboard input works directly
calculatorForm.addEventListener('click', () => {
displayInput.focus();
});
});
</script>
</body>
</html>