Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Desafio 01]

app.js

function comprar()
{
    if (validarEntradaIndefinida(document.getElementById('qtd').value))
    {
        alert('Preencha o campo quantidade corretamente.');
        return;
    }
    else if (validarEntradaIndefinida(document.getElementById('tipo-ingresso').value) || validarEntradaDesconhecida(document.getElementById('tipo-ingresso').value))
    {
        alert('Tipo do ingresso indefinido ou desconhecido.');
        return;
    }    
    else if (parseInt(document.getElementById(`qtd-${document.getElementById('tipo-ingresso').value}`).textContent) < document.getElementById('qtd').value)
    {
        alert(`Quantidade indisponível para tipo ${document.getElementById('tipo-ingresso').value}.`);
        return;
    }
    else
    {
        document.getElementById(`qtd-${document.getElementById('tipo-ingresso').value}`).textContent = parseInt(document.getElementById(`qtd-${document.getElementById('tipo-ingresso').value}`).textContent) - document.getElementById('qtd').value;
        document.getElementById('qtd').value = '';
        alert('Compra realizada com sucesso!');
    }
}

function validarEntradaIndefinida(entrada)
{
    return 0 >= entrada || '' == entrada || 'undefined' === typeof entrada;
}

function validarEntradaDesconhecida(entrada)
{
    return !('inferior' == entrada || 'superior' == entrada || 'pista' == entrada);
}

index.html

<!DOCTYPE html>
<html lang="pt-BR">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@700&family=Inter:wght@400;700&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="./styles/_reset.css">
    <link rel="stylesheet" href="./styles/style.css">
    <title>e-Ticket</title>
</head>

<body>
    <header>
        <img class="logo" src="./assets/PNG/Logo e-tricket.png" alt="Logo">
    </header>
    <main class="container">

        <div class="grafismo"></div>
        <h1>Compre seu <span>ingresso</span></h1>
        <form action="">
            <label class="input-group">
                Escolha o tipo
                <select name="tipo-ingresso" id="tipo-ingresso">
                    <option value="inferior">Cadeira inferior</option>
                    <option value="superior">Cadeira superior</option>
                    <option value="pista">Pista</option>
                </select>
            </label>
            <label class="input-group">Qtde.
                <input type="number" id="qtd" placeholder="00" min="1" max="10">
            </label>
            <button onclick="comprar()" type="button">Comprar</button>
        </form>
        <img class="hachuras" src="./assets/SVG/Hachuras.svg" alt="">
        <section>
            <h2>Quantidade disponível</h2>

            <ul class="lista">
                <li>Pista<span id="qtd-pista">100</span></li>
                <li>Cadeira superior<span id="qtd-superior">200</span></li>
                <li>Cadeira inferior<span id="qtd-inferior">400</span></li>
                
            </ul>
            <img src="./assets/Ingresso.svg" alt="">
        </section>
    </main>

    <script src="js/app.js"></script>
</body>

</html>

Por coincidência eu já tinha feito essa validação no meu código do ingresso online.

1 resposta
solução!

Oi Leonardo, tudo bem?

Muito obrigada por compartilhar seu código! É ótimo ver que você já implementou uma validação semelhante em relação à compra de ingressos. Isso mostra que você está aplicando conceitos importantes de validação de entrada. Parabéns pela prática contínua!

Um abraço e bons estudos.