Repository navigation
Expand file tree
/
Copy pathex41.js
More file actions
66 lines (55 loc) · 1.78 KB
/
Copy pathex41.js
File metadata and controls
66 lines (55 loc) · 1.78 KB
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
const inputCodigo = document.querySelector("#codigo");
const botao = document.querySelector("#btnValidar");
const mensagem = document.querySelector("#mensagem");
const tentativasTexto = document.querySelector("#tentativas");
const codigoSalvo = "abd";
let limite = 3;
let tentativas = 0;
// Mostra o estado atual das tentativas na tela
tentativasTexto.textContent = `Tentativas Restantes: ${limite - tentativas}`;
function validarCodigo(codigoDigitado) {
if (codigoDigitado.trim() === "") {
return {
sucesso: false,
mensagem: "código não pode ser vazio",
ContarTentativas: false
};
}
if (codigoDigitado !== codigoSalvo) {
return {
sucesso: false,
mensagem: "código inválido",
ContarTentativas: true
};
}
return {
sucesso: true,
mensagem: "Acesso liberado",
ContarTentativas: false
};
}
botao.addEventListener("click", function () {
const codigoDigitado = inputCodigo.value;
const resultado = validarCodigo(codigoDigitado);
// Limpa classes anteriores
mensagem.classList.remove("sucesso", "erro");
mensagem.textContent = resultado.mensagem;
if (!resultado.sucesso && resultado.ContarTentativas) {
tentativas++;
}
const restantes = limite - tentativas;
tentativasTexto.textContent = `Tentativas restantes: ${restantes}`;
// FEEDBACK VISUAL
if (resultado.sucesso) {
mensagem.classList.add("sucesso");
} else {
mensagem.classList.add("erro");
}
if (tentativas >= limite) {
mensagem.textContent = "Acesso bloqueado";
mensagem.classList.remove("sucesso");
mensagem.classList.add("erro");
botao.disabled = true;
}
inputCodigo.value = "";
});