-
Notifications
You must be signed in to change notification settings - Fork 3
/
app.js
68 lines (56 loc) · 1.95 KB
/
app.js
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
const buttons = Array.from(document.querySelectorAll("div > button"))
const numericButtons = buttons.filter(button => button.innerText.match(/\d/g))
const operatorsButtons = buttons.filter(button => button.innerText.match(/\+|\-|·|÷/g))
const decimalButton = buttons.filter(button => button.innerText == ",")[0]
const clearButton = buttons.filter(button => button.innerText == "C")[0]
const numberInput = document.querySelector("input[name=\"number\"]")
const operatorInput = document.querySelector("input[name=\"operator\"]")
const operationInput = document.querySelector("input[name=\"operation\"]")
const calculateInput = document.querySelector("input[name=\"calculate\"]")
const submitButton = document.querySelector("button[type=\"submit\"]")
const form = document.querySelector("form[name=\"calculate\"]")
let nextDecimal = false
operatorsButtons.forEach(
operators => operators.addEventListener(
"mouseup",
() => {
operationInput.value += operatorInput.value + numberInput.value
operatorInput.value = operators.value
form.submit()
}
)
)
numericButtons.forEach(
number => number.addEventListener(
"mouseup",
() => {
const numberValue = number.value
if (nextDecimal) numberInput.value += ".".concat(numberValue)
else if (numberInput.value === "0") numberInput.value = numberValue
else numberInput.value += numberValue
nextDecimal = false
limitInput()
}
)
)
decimalButton.addEventListener(
"mouseup",
() => nextDecimal = numberInput.value.includes(".")? false:true
)
clearButton.addEventListener(
"mouseup",
() => numberInput.value = "0"
)
numberInput.addEventListener("input", limitInput)
numberInput.addEventListener("change", limitInput)
submitButton.addEventListener(
"mousedown",
() => {
operationInput.value += operatorInput.value + numberInput.value
calculateInput.value = "true"
form.submit()
}
)
function limitInput() {
if (numberInput.value.length > 13) numberInput.value = numberInput.value.slice(0, 13)
}