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

Apagar Campos Após Enviar Formulário


Guest - Amon-Rá_Beraldo -

Pergunta

Guest - Amon-Rá_Beraldo -

A página inicial do meu site mostra o conteúdo dos links em um Iframe. Na página inicial, há um pequeno formulário para cadastrar e-mail para receber a famosa "newsletter" e a confirmação de inserção do e-mail no banco de dados aparece no Iframe.

Preciso que, ao enviar os dados, os campos do formulário sejam apagados, mas não estou conseguindo pensar em como fazer isso. =(

Tentei assim:

<script language="JavaScript">
function apagar () {
  document.cadastrar.nome.value=""
  document.cadastrar.email.value=""
}
</script>

Mas o problema aí é que os dados são apagados antes de serem enviaods, pois chamo a função no onSubmit, na tag <form>.

Alguém tem alguma sugestão de como posso solucionar esse pequeno grande problema?

Valeu

Abraços

Link para o comentário
Compartilhar em outros sites

18 respostass a esta questão

Posts Recomendados

  • 0

No onSubmit do formulário há isto:

onSubmit="MM_validateForm('nome','','R','email','','RisEmail');return document.MM_returnValue"

(A validação de campos gerada pelo Dreamweaver).

Há como colocar mais um função nesse evento?

E, se possível, explique-me melhor para que serve essa função setTimeOut

Link para o comentário
Compartilhar em outros sites

  • 0

Eu poderia colocar essa função setTimeOut, se os campos do form estiverem corretos. O script é este:

function MM_validateForm() { //v4.0
  var i,p,que,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='-O campo '+nm+' deve conter um e-mail válido.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '-O campo '+nm+' é obrigatório.\n'; }
  } if (errors) alert('Verifique o(s) erro(s):\n'+errors);
      document.MM_returnValue = (errors == '');
}

Eu poderia por o setTimeOut() aqui:

if (errors) alert('Verifique o(s) erro(s):\n'+errors);

else {

função setTimeOut() }

document.MM_returnValue = (errors == '');

}

Como posso fazer isso?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Amon-Rá_Beraldo -

Olhem este tópico:

http://scriptbrasil.com.br/forum/index.php...topic=77828&hl=

Postei essa dúvida no sub-fórum de HTML e sugeriram-me o uso de JavaScript.

Alguém poderia me explicar onde inserir o código que há lá?

Não estou conseguindo inserir a função setTimeOut naquele código...

Valeu

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

O código da página inicial é enorme, mas o do form é este:

<form action="Newsletter/cadastrar.php" method="post" name="cadastrar" target="conteudo" id="cadastrar" onSubmit="MM_validateForm('nome','','R','email','','RisEmail');return document.MM_returnValue">
      <font class="inferior">Nome:</font><br>
      <input name="nome" type="text" id="nome" size="13" maxlength="200">
                <br>
    <font class="inferior">E-Mail:</font><br>
    <input name="email" type="text" id="email" size="13" maxlength="200">
    <br>
    <input type="submit" name="Submit" value="Enviar">
    </form>

O código da função MM_validateForm() está no meu post anterior.

Link para o comentário
Compartilhar em outros sites

  • 0

bom tenta fazer isso pra ver se funciona

<form action="Newsletter/cadastrar.php" method="post" name="cadastrar" target="conteudo" id="cadastrar">
      <font class="inferior">Nome:</font><br>
      <input name="nome" type="text" id="nome" size="13" maxlength="200">
                <br>
    <font class="inferior">E-Mail:</font><br>
    <input name="email" type="text" id="email" size="13" maxlength="200">
    <br>
    <input type="button" name="Submit" value="Enviar" onClick="MM_validateForm('nome','','R','email','','RisEmail');">
    </form>
e no javascript faz isso
function MM_validateForm() { //v4.0
  var i,p,que,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='-O campo '+nm+' deve conter um e-mail válido.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '-O campo '+nm+' é obrigatório.\n'; }
  } if (errors) alert('Verifique o(s) erro(s):\n'+errors);
     else
     {
     document.cadastrar.submit();
     document.nome.value="";
     document.email.value="";
     }
}

Link para o comentário
Compartilhar em outros sites

  • 0

No onSubmit do formulário há isto:

onSubmit="MM_validateForm('nome','','R','email','','RisEmail');return document.MM_returnValue"

(A validação de campos gerada pelo Dreamweaver).

Há como colocar mais um função nesse evento?

E, se possível, explique-me melhor para que serve essa função setTimeOut

Pra começar, eu escrevi errado a função. Não é setTimeOut e sim setTimeout (esse mero erro faz o código não funcionar).

É possivel sim colocar mais de uma função no Onsubmit. O próprio DW está executando 2 funções. É claro que as funções são executadas na ordem em que aparecem.

onSubmit="funcao1(); funcao2(); funcao3();funcao4()"

A função setTimeout(ação, tempo) permite que uma determinada ação seja executada após um determinado tempo (dado em milissegundos)

Nesse caso, a função "apagar()" seria executada após 2 segundos.

Tenta denovo e vê se dá certo. Pelo menosno IE sei que funciona. Em outros navegadores, não garanto. ( até porque existem outras funções que também causam esse "atraso de tempo")

onSubmit="MM_validateForm('nome','','R','email','','RisEmail');return document.MM_returnValue;setTimeout('apagar()', 2000)"

Se quiser , (não estou fazendo propaganda!) dá uma olhada nessa apostila abaixo.

Link para o comentário
Compartilhar em outros sites

  • 0

só pra comentar a resposta do UpTroni:

Cuidado quando for usar funções chamdas por botões. Se a função passa um valor pra uma nova página (action) o ideal é que:

OU o formulário use um <form onSubmit="funcao()"> seguido de um <input type="Submit">

OU o formulário não use o evento onSubmit, mas a função é chamada por um <input type="Button" onClick="funcao()">

Isso evida erros entre navegadores. (não sei se expliquei bem)

Link para o comentário
Compartilhar em outros sites

  • 0

Eu nem sabia que um <imput type="button"> enviava um formulário. Pensei que ele tinha errado o código, mas quando testei, deu certo( enviou, mas não apagou os campos).

E realmente não envia. A menos que se use document.formulario.submit() que é uma instrução que pode ser usada em qualquer função.

mas testa aí aquilo que falei e vê se d'certo.

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...