Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Aula 4 - Exercício 6 - Desabilitar Botao reiniciar

A solução do exercício propõe que a implementação para desabilitar o botão de reiniciar deve ser feita dentro da função "inicializaCronometro". Porém ainda existe um 'gap' entre o início da digitação e a inicialização (decrescente) do cronômetro, o que poderia causar um bug.

Sendo assim, fiz a implementação do código que desabilita o botão dentro da função "iniciaContadores". Isso garante que, assim que o usuário iniciar a digitação o botão que reinicia o jogo estará desabilitado.

Segue abaixo o código:

var tempoInicial = $("#tempo-digitacao").text();
var campo = $(".campo-digitacao");

$(function(){
    atualizaTamanhoFrase();
    iniciaContadores();
    inicializaCronometro();
    $("#botao-reiniciar").click(reiniciaJogo);

})

function atualizaTamanhoFrase(){
    var frase = $(".frase").text();
    var numPalavras = frase.split(" ").length;
    $("#tamanho-frase").text(numPalavras);
}

function iniciaContadores() {
    campo.on("input", function(){
        var conteudo = campo.val();
        var qntPalavras = conteudo.split(/\s+/).length - 1;
        var qntCaracteres = conteudo.length;
        $("#contador-palavras").text(qntPalavras);
        $("#contador-caracteres").text(qntCaracteres);
        $("#botao-reiniciar").attr("disabled", true);
    }); 
}

function inicializaCronometro() {
    var tempoRestante = $("#tempo-digitacao").text();
    campo.one("focus", function(){
    var intervalID = setInterval(function(){
        tempoRestante--;
        $("#tempo-digitacao").text(tempoRestante);
        if (tempoRestante < 1){
            $(".campo-digitacao").attr("disabled", true);
            $("#botao-reiniciar").attr("disabled", false);
            clearInterval(intervalID);
            }
        }, 1000)
    })
}

function reiniciaJogo(){
    campo.attr("disabled", false);
    $("#contador-palavras").text("0");
    $("#contador-caracteres").text("0");
    $("#tempo-digitacao").text(tempoInicial);
    $(".campo-digitacao").val('');
    inicializaCronometro();
}
2 respostas
solução!

Oi Diogo, tudo bem ?

Legal ter pensado nesse bug, o que você pode fazer nesse caso é sugerir uma melhoria na resposta, acho que seu caso se enquadra perfeitamente nisso.

Você consegue fazer lá ?

Abraços

Ok...fiz a sugestão!