Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nelson Dutra

[Resolvido] Impedir Submit

Recommended Posts

Boa tarde, preciso impedir que um formulário seja enviado ao usuário clicar no botão submit, mas de uma forma que so interfira naquele botão, que não bloqueie os demais botões submit da pagina.

Como posso fazer isso usando javascript ou jQuery?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se só esse botão não vai enviar faça:

 

<input type="button" value="Botão sem Nada">

 

ao invés de:

 

 

<input type="submit" value="Botão sem Nada">

Compartilhar este post


Link para o post
Compartilhar em outros sites

no evento submit do teu formulario em especifico, coloque um return false;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer ele não enviar, mas preciso que ele pegue o nome do form que está dentro, isto é possível? Porque esses form são gerados atraves do db e não é certo quantos form vai haver. Por este fato gostaria de saber o nome do form que este botaõ esta dentro, há como fazer isto em javascript? Ou alguma outra forma que possa fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende de como essas informações são tratadas pelo PHP, poste o código PHP que gera esses formulários aqui, vai ajudar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o código php que gera este formulario:

 

$result3 = mysql_query("select * from megaoi_clientes where status='aprovado' AND cpf='".$cpf."' order by data_cadastro desc");
while($row = mysql_fetch_array($result3) ){
   echo "<form id='formulario_clientes' action='visualizardados.php' method='post'><tr><input type='hidden' name='codigo' value='".$row['codigo']."'><td>".$row['nome']."</td><td>".$row['numero_contato']."</td><td><input type='text' name='cpf' value='".$row['cpf']."'>"."</td><td>"."<input type='text' name='plano' value='".$row['plano']."'>"."</td><td>".$data_cadastro."</td><td><input type='submit' value='Visualizar'></form>"."</td></tr>";
}

 

Obs: Ele é gerado no modelo de tabela pois os dados precisam ficar realmente dentro de uma tabela e não pelo sistema antigo de estrutura html.

E quando clicar no botão ele exibe os dados usando o número do codigo, mas o problema é que está sendo usado o id codigo para todos os resulatdos gerados entao ele sempre pega do primeiro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então desse modo que você está fazendo o(s) formulário(s) não terão "nomes", e casos você defina um nome ele ficará fixo em todos os formulários que forem gerados (creio que não é isso que você quer), eu não sei se sua tabela tem um campo ID (Identificador aquele que é chave primária), se você tiver você pode colocar um nome dinâmico para cada formulário gerado, então nunca um formulário terá o mesmo nome do outro, seu código ficaria +/- assim:

 

$result3 = mysql_query("select * from megaoi_clientes where status='aprovado' AND cpf='" . $cpf . "' order by data_cadastro desc");
while ($row = mysql_fetch_array($result3)) {
   echo "<form id='formulario_clientes' name='formulario" . $row['id'] . "' action='visualizardados.php' method='post'><tr><input type='hidden' name='codigo' value='" . $row['codigo'] . "'><td>" . $row['nome'] . "</td><td>" . $row['numero_contato'] . "</td><td><input type='text' name='cpf' value='" . $row['cpf'] . "'>" . "</td><td>" . "<input type='text' name='plano' value='" . $row['plano'] . "'>" . "</td><td>" . $data_cadastro . "</td><td><input type='submit' value='Visualizar'></form>" . "</td></tr>";
}

 

então suponhamos que você tenha 3 registros nessa tabela do banco de dados com id 1, 2, 3 na hora que executar esse código que mostrei acima ele vai gerar os 3 formulários assim:

 


<form id='formulario_clientes' name='formulario1' action='visualizardados.php' method='post'>
<form id='formulario_clientes' name='formulario2' action='visualizardados.php' method='post'>
<form id='formulario_clientes' name='formulario3' action='visualizardados.php' method='post'>

 

 

se você quizer pegar os nomes de todos os formulários da página você pode usar esse javascript:

 


<script type="text/JavaScript" language="JavaScript">
   var quant = document.forms.length;
   var texto = "Existem " + quant + " formulários nesta página!\n\n";
   texto += "Listagem de Nomes:";

   for(var i = 0; i < quant; i++){
     texto += "\n" + document.forms[i].name;
   }

   alert(texto);
</script>

 

a saída desse código será:

 


Existem 3 formulários nesta página!

Listagem de Nomes:
formulario1
formulario2
formulario3

 

espero que ajude!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, já ajudou muito sim, mas como ocorre uma ação quando o usuario clica no botao para submit, como faço para meu javascript identificar em qual formulário o botão foi clicado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando o usuário clicar no botão meu java script vai ler o valor que estiver dentro do input codigo, o javascript vai usar uma requisição json para consultar no db alguns dados e exibir com alert na tela. So que nao consigo que ele busque no bd utilizando o codigo, mas ele sempre pega o valor do primeiro input codigo enquanto preciso que ele pegue o valor do input referente a este formulário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que isso resolveria seu problema?

 

PHP:

$result3 = mysql_query("select * from megaoi_clientes where status='aprovado' AND cpf='" . $cpf . "' order by data_cadastro desc");
while ($row = mysql_fetch_array($result3)) {
echo "<form id='formulario_clientes' id='formulario" . $row['id'] . "' action='visualizardados.php' method='post'><tr><input type='hidden' name='codigo' value='" . $row['codigo'] . "'><td>" . $row['nome'] . "</td><td>" . $row['numero_contato'] . "</td><td><input type='text' name='cpf' value='" . $row['cpf'] . "'>" . "</td><td>" . "<input type='text' name='plano' value='" . $row['plano'] . "'>" . "</td><td>" . $data_cadastro . "</td><td><input type='button' onclick='valida(\"formulario" . $row['id'] . "\")' value='Visualizar'></form>" . "</td></tr>";
       }

 

Javascript:

 

<script>
function valida(formulario){
alert(document.getElementById(formulario).codigo.value);

/*
* Ao inves de alert você coloca o jSon que vai buscar as informações.
*/
}
</script>

 

Esqueci de especificar, nesse modo suponhamos que você tenha 3 formulários:

 

Exemplo ilustrativo:

<form id='formulario_clientes' name='formulario1' action='visualizardados.php' method='post'>
<input type="hidden" name="codigo" value="1234" /><input type="button" value="Visualizar1"/>
</form>
<form id='formulario_clientes' name='formulario2' action='visualizardados.php' method='post'>
<input type="hidden" name="codigo" value="5678" /><input type="button" value="Visualizar2"/>
</form>
<form id='formulario_clientes' name='formulario3' action='visualizardados.php' method='post'>
<input type="hidden" name="codigo" value="9012" /><input type="button" value="Visualizar3"/>
</form>

 

e o usuário clicar no botão "Visualizar2" a resposta será:

 

5678

 

por que é o valor do campo "codigo" do segundo formulário, caso ele clique no 3º formulário a saida será:

 

9012

 

e assim por diante!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, testei a principio vai funcionar, mas não sei porque quando clico no botão ele nao esta ativando a função javascript, fiz até algumas alterações para ver se ele ativa mas nada, o firebug retorna ReferenceError();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está rodando a aplicação local? se estiver rondando na web, manda o link da página para que eu possa ver como está gerando o HTML e onde se localiza o JS.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o código:

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
               <meta name="robots" content="noindex, nofollow">
	<link rel="stylesheet" type="text/css" href="css/style.css" />
	<link rel="stylesheet" type="text/css" href="css/style-menu.css" />
       	<script src="js/jquery-1.6.1.min.js"></script>
       	<script>
		$(document).ready(function(){					
			function valida(formulario){
				alert(document.getElementById(formulario).codigo.value);
				alert("Entrou na na função valida().");
			}
		});
	</script>
</head>
<body>
	<div id="site">
  		<div id="centro-site">
                               <table>
                                   <tr>
                                       <td>Nome</td>
                                       <td>Número Contato</td>
                                       <td>CPF</td>
                                       <td>Plano</td>
                                       <td>Data da Venda</td>
                                   </tr>
                                   <form id='formulario_clientes1' name='formulario1' action='visualizardados.php' method='post'><tr><input type='hidden' id='codigo' name='codigo' value='3219'><td>MARIA JANETE VARGAS MORERA</td><td>5591817867</td><td><input type='text' name='cpf' value='66193923004'></td><td><input type='text' name='plano' value='Oi fixo controle + Velox'></td><td>27/09/2012</td><td><input type='submit' value='Visualizar'></td><td><input type='button' value='+ Info' onclick='valida("formulario1")' ></td></form></tr>
                               </table>                                                                                                                                                                                                                                                            
                       </div>
	</div>	
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.