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')