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

Não consigo atualizar div via Jquery

O intuito do código abaixo é validar se usuário digitou um e-mail válido no input e atualizar a div "msgemail" com a frase "Bem Vindo " + email.. Ele até chega a fazer mas não fica estático, some logo depois. Eu queria que ficasse estático na tela. Obs: Já tentei mudar o trecho de .innerHTML para .innerText mas sem sucesso..

Obrigado desde já.

<!DOCTYPE html>
<html>
<head>
    <title>teste</title>
    <meta charset="UTF-8" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    $('#form_contato').submit(function(){
        var er = new RegExp(/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/);
        var email = $('#txt_email').val();

        if( email == '' || !er.test(email) ) { alert('Email inválido'); return false; }
        var div = document.getElementById("msgemail");
        div.innerHTML = "Bem vindo " + email;
    });
});
</script>
</head>
<body>
    <div>
        <form action="" id="form_contato">
            <label>Email:</label>
            <input type="text" id="txt_email"/>
            <input type="submit" value="Enviar">
        </form>
    </div>
    <div id="msgemail">
    </div>
</body>
</html>
2 respostas
solução!

Me parece que o problema é você estar fazendo isso na função que roda no evento submit(), o que explica que você a veja por um instante: você está alterando um elemento de um documento que está prestes a desaparecer, porque o submit envia uma requisição POST para o servidor, que envia HTML novo para ser renderizado. Você tem, pelo menos, duas opções:

  1. Enviar o HTML de resposta ao submit com o div #msgemail já preenchido com o e-mail que foi enviado;
  2. Mudar a estratégia de comunicação com o servidor para AJAX, o que vai permitir que você faça requests sem sair da página renderizada no momento.

Agradeço pelo retorno Antonio, acabei trocando o bloco por uma function em JavaScript que não envia dados para servidor, porque meu intuito é apenas pra fim didático mesmo.