if (isNaN(quantidade) || quantidade <= 0 ) { alert("insira uma quantidade válida."); return; }
ele é acionada com qualquer número, não sei o motivo
if (isNaN(quantidade) || quantidade <= 0 ) { alert("insira uma quantidade válida."); return; }
ele é acionada com qualquer número, não sei o motivo
Olá Thiago!
Pelo que você descreveu, parece que o alert está sendo acionado para qualquer valor inserido na variável quantidade
. Isso pode estar acontecendo por alguns motivos comuns. Vamos analisar o seu código:
if (isNaN(quantidade) || quantidade <= 0) {
alert("insira uma quantidade válida.");
return;
}
Aqui estão algumas possíveis causas e soluções:
Tipo de Dado da Variável quantidade
:
quantidade
está sendo convertida para um número antes de fazer a validação. Se quantidade
for uma string, a comparação quantidade <= 0
pode não funcionar como esperado.parseInt
para garantir que quantidade
é um número. Por exemplo:quantidade = parseInt(quantidade, 10);
if (isNaN(quantidade) || quantidade <= 0) {
alert("insira uma quantidade válida.");
return;
}
Verificação de isNaN
:
isNaN
verifica se o valor não é um número. Se quantidade
não for um número válido após a conversão, isNaN(quantidade)
retornará true
.quantidade
está sendo corretamente capturado do input do usuário.Espaços em Branco e Valores Vazios:
quantidade = quantidade.trim(); // Remove espaços em branco
if (quantidade == "" || isNaN(quantidade) || quantidade <= 0) {
alert("insira uma quantidade válida.");
return;
}
Aqui está um exemplo completo de como pode ficar o seu código:
let quantidade = document.getElementById('quantidade').value;
quantidade = quantidade.trim(); // Remove espaços em branco
quantidade = parseInt(quantidade); // Converte para número
if (isNaN(quantidade) || quantidade <= 0) {
alert("insira uma quantidade válida.");
return;
}
// Código para adicionar ao carrinho continua aqui
Espero ter ajudado e bons estudos!
A última solução resolveu o problema, provavelmente o .value depois de ('quantidade')