Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) não mostrar mensagem!


misterviralata

Pergunta

Ola Amigos!

Estou com uma duvida em um script simples

<script>
function campo () {
if ((document.frmAjax.nome.value == "")) {
document.all.mensagem1.innerHTML = "nome em Branco";
document.frmAjax.nome.focus();
return false;
}else{
if ((document.frmAjax.email.value== "")){
document.all.mensagem2.innerHTML = "e-mail em Branco";
document.frmAjax.email.focus();
return false;
}
}
}
</script>

<form action="teste.html" method="post" name="frmAjax">
nome: <input type="text" name="nome">
<div id="mensagem1"></div>

Email: <input type="text" name="email">
<div id="mensagem1"></div>

<input type="submit" value="envia" onclick="return campo()">

</form>

Caso o campo não esteja preenchido é exibido a mensagem, Até aqui tudo bem

O problema é que depois que preencho o campo a mensagem continua exemplo:

Preenchi o campo email e deixei o campo nome em branco então a mensagem "Nome em branco" é exibida ainda nesta pagina preencho o campo nome e deixo o campo email em branco e o script mostra as duas mensagem como se os dois campos estivessem em branco!

O que está errado?

Obrigado!

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Ali em cima você não vai poder usar um simples "else" para poder validar !

O erro foi na lógica...

Imagine que o usuário esquece de preencher o nome: O programa vai alertá-lo de que o nome é um campo obrigatório e não vai deixar enviar o formulário

Mas e se o usuário preencher os dois campos ?

Ele verifica apenas se o nome está preenchido.Caso contrário (caso o nome esteja preenchido) ele alerta dizendo que o e-mail não foi preenchido

Tenta assim:

<script type="text/javascript">
function campo () {
if (document.frmAjax.nome.value == "") {
document.all.mensagem1.innerHTML = "nome em Branco";
document.frmAjax.nome.focus();
return false;
}else if (document.frmAjax.email.value=="") {
if (document.frmAjax.email.value== ""){
document.all.mensagem2.innerHTML = "e-mail em Branco";
document.frmAjax.email.focus();
return false;
}
}
</script>
Só mexi no código tirando algumas chaves e colchetes desnecessários Obs.: Esse código só irá mostrar uma mensagem de cada vez Se deseja que mostre a mensagem de texto para todos os campos, faça isso:
<script type="text/javascript">
function campo () {
valor = true
if (document.frmAjax.nome.value == "") {
document.all.mensagem1.innerHTML = "nome em Branco";
document.frmAjax.nome.focus();
valor = false
}
if (document.frmAjax.email.value=="") {
document.all.mensagem2.innerHTML = "e-mail em Branco";
document.frmAjax.email.focus();
valor = false
}
if (valor==false) {
return false
}
}
</script>

Qualquer coisa, posta aí !

Link para o comentário
Compartilhar em outros sites

  • 0

Qual foi o erro ??

Tenta assim:

function campo() {
valor = true
if (document.frmAjax.nome.value == "") {
document.getElementById("mensagem1").innerHTML = "nome em Branco";
document.frmAjax.nome.focus();
valor = false
}
if (document.frmAjax.email.value=="") {
document.getElementById("mensagem2").innerHTML = "e-mail em Branco";
document.frmAjax.email.focus();
valor = false
}
if (valor==false) {
return false
}
}
</script>
Achei também outro erro... Olha isso aqui:
nome: <input type="text" name="nome">
<div id="mensagem1"></div>

Email: <input type="text" name="email">
<div id="mensagem1"></div>
Tem dois campos com o mesmo id Tenta deixar assim:
nome: <input type="text" name="nome">
<div id="mensagem1"></div>

Email: <input type="text" name="email">
<div id="mensagem2"></div>

Se funcionar, posta aí !

Link para o comentário
Compartilhar em outros sites

  • 0

Jonathan Queiroz

Os Id eu digitei errado aqui no forum mas no meu teste já tava certo, quanto ao erro eu to usando o explorer 7 e quando clico no botão enviar não retorna a mensagem e na barra de status da uma mensagem de erro no script.

Tentei este ultimo exemplo que você postou e continua na mesma, quando digito um valor no campo e-mail e clico em enviar mostra a mensagem porque o campo nome da vazio, mas quando preecho o campo nome e apago a valor do campo email a mensagem do campo nome em branco continua na tela, mesmo com o campo nome preenchido, é isto que estou tentando fazer, tirar a mensagem caso o campo esteja preenchido.

Link para o comentário
Compartilhar em outros sites

  • 0

<script>

function campo () {
    var valor = true;
    if ((document.frmAjax.nome.value == "")) {
        document.getElementById('mensagem1').innerHTML = "nome em Branco";
        document.frmAjax.nome.focus();
        valor = false;
    }else{
        if ((document.frmAjax.email.value== "")){
            document.getElementById('mensagem2').innerHTML = "email em Branco";
            document.frmAjax.email.focus();
            valor = false;
        }
    }
    if(valor == false){
        return false;
    }
}
</script>

<form action="teste.php" method="post" name="frmAjax">
nome: <input type="text" name="nome">
<div id="mensagem1"></div>

Email: <input type="text" name="email">
<div id="mensagem2"></div>

<input type="submit" value="envia" onclick="return campo()">

</form>

usa document.getelementbyid pra pegar a div, o document.all só funciona pro internet explorer...

Editado por Allanrf
Link para o comentário
Compartilhar em outros sites

  • 0
usa document.getelementbyid pra pegar a div, o document.all só funciona pro internet explorer...

Ali no meu post já está assim !

misterviralata, você colocou o código com o document.getElementById ??

Mais uma coisa:

<form action="teste.html" method="post" name="frmAjax">
nome: <input type="text" name="nome">
<div id="mensagem1"></div>

Email: <input type="text" name="email">
<div id="mensagem1"></div>

<input type="submit" value="envia" onclick="return campo()">

</form>
Ao invés de fazer isso, faça como no código abaixo
<form action="teste.html" method="post" name="frmAjax" onsubmit="return campo()">
nome: <input type="text" name="nome">
<div id="mensagem1"></div>

Email: <input type="text" name="email">
<div id="mensagem1"></div>

<input type="submit" value="envia">

</form>

Afinal, o código que postei irá funcionar também caso você dê submit via código (exemplo: document.frmAjax.submit())

Espero ter ajudado !

Link para o comentário
Compartilhar em outros sites

  • 0

Ola Amigos

Assim deu certo!!

<script>
function campo () 
{
document.all.mensagem1.innerHTML = "";
document.all.mensagem2.innerHTML = "";
    if ((document.frmAjax.nome.value == ""))
     {
        document.all.mensagem1.innerHTML = "nome em Branco";
        document.frmAjax.nome.focus();
        return false;
    }
    else
    {

    if ((document.frmAjax.email.value== ""))
    {
        document.all.mensagem2.innerHTML = "e-Mail em Branco";
        document.frmAjax.email.focus();
        return false;
    }
    }

}
</script>

<form action="teste.html" method="post" name="frmAjax">
nome: <input type="text" name="nome">
<div id="mensagem1"></div>

Email: <input type="text" name="email">
<div id="mensagem2"></div>

<input type="submit" value="envia" onclick="return campo()">

</form>

tem outro modo de limpar o innerHTML?

Valeu!!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...