Ir para conteúdo

POWERED BY:

Arquivado

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

rcdesign

Como fazer com que a tecla ENTER envie o form

Recommended Posts

Depois de quase 3 horas pesquisando no forum (e na internet) sobre o assunto não consegui chegar a uma conclusão de como fazer para, no momento do preenchimento de um form, quando o usuário apertar a tecla ENTER, o formulário ser processado e efetivamente cadastrar os dados no BD.

 

Um formulário simples em html ao se clicar o ENTER o form é enviado, mas com programação PHP e banco de dados MySQL, os dados não são enviados ao bd..

 

Procurei também nos foruns de Javascript mas não consegui encontrar nenhum post que definitivamente resolva a questão. Ou realmente não tem essa solução no forum ou eu procurei errado e perdi essas 3 horas de trabalho http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sempre que você clicar no ENTER ele vai direto pra onde você quer....mas cuidado para não ter mais de 1 formulário na página....é só colocar um form e o resto tudo link!!Qualquer coisa posta ai..Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

você terá que fazer um arquivo em php para ele incluir os dados na banco. O caminho desse arquivo você coloca no Action do form http://forum.imasters.com.br/public/style_emoticons/default/excl.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao pressionar ENTER o form é submetido automaticamente para o ACTION dele!

Pois é Adriano, mas os dados só são cadastrados quando se clica no botão (tipo submit), quando se pressiona a tecla Enter não dá certo..

Sempre que você clicar no ENTER ele vai direto pra onde você quer....mas cuidado para não ter mais de 1 formulário na página....é só colocar um form e o resto tudo link!

Então Leandro.. essa é uma questão interessante pois tenho várias funções de programação dentro da página e conseqüentemente acabo tendo mais de um formulário também, no entanto, o formulário só é montado dependendo da ação anterior do usuário..Por exemplo, se clicar no menu vai abrir o formulário para criar uma assinatura (por exemplo), ao se criar a assinatura, a página recarrega com outras funções.. outro formulário..sacou?

você terá que fazer um arquivo em php para ele incluir os dados na banco. O caminho desse arquivo você coloca no Action do form

hehehehe.. claro martinusso.. a questão é que a programação está na mesma página do form.. ou seja ao se clicar o botão "enviar" a página recarrega, lê a programação e executa a ação (ou ações). Isso não acontece quando se aperta o Enter...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, mas se o cara tiver preenchendo o formulário o foco está nele ,entao se pressionar o enter ele vai pegar ação do form daquele formulário ......

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, mas se o cara tiver preenchendo o formulário o foco está nele ,entao se pressionar o enter ele vai pegar ação do form daquele formulário ......

sim Leandro, no entanto ao se pressionar o Enter os dados não são cadastrados no BD.

cara tecla enter é ação keypress + evento e pra isso você vai precisar usar javascriptpesquisa no forum de javascript que você acha uns exemplos

Fabyo, eu procurei no forum de javascript vide terceiro parágrafo do meu post:"Procurei também nos foruns de Javascript mas não consegui encontrar nenhum post que definitivamente resolva a questão. ..."

é facil mas é questao de você saber mecher com javascript você pode trocar o tab por enter e fazer mais algumas funções pra concluir seu sistema

aí já pega um pouquinho..rs.. o que eu conheço de javascript dá apenas pro gasto, mas se tiver um código que faz o que eu quero ou que pelo menos faz alguma coisa parecida com que quero eu sempre dou um jeito. Vou mexendo até descobrir e conseguir customiza-lo.Não quero trocar função de teclas, mesmo porquê tenho forms com diversos campos e o tab é essencial. Sò quero que ao se pressionar a tecla Enter os dados sejam gravados no bd.. coisa que só acontece quando se clica no botão.. http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao é como falei só usar javascript e coloque uma ação quando onkeypress tecla for igual a 13(enter) ele da submit

 

e quando falei trocar tab por enter é uma coisa normal nao vai deixar de funcionar seu tab = )

 

só to passando a ideia pra você tentar fazer mas se você nao conseguir eu posto um exemplo, mas tenta ai pelo menos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabyo,

 

testei várias coisas antes de abrir o post mas nada funcionou..

 

meu último teste foi o seguinte:

<script language="javascript"><!--function handleEnter(event) {var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;if (keyCode == 13) {  document.form1.submit();}return false;}--></script>
e aí.. no último campo do form:

<input name="assinatura" type="text" id="assinatura" size="50" onKeyPress="handleEnter(event)">

e também não funcionou.. http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

não deu certo Fabyo, mas de qqr forma 'caiu a ficha' (as vezes demora mais cai) numa situação aqui..

 

o form só é processado de acordo com a ação executada pelo botão.. ou seja:

<input name="criar" type="submit" id="criar" value="Criar">..........if (isset($_POST['criar'])){	$assinatura = $_POST['assinatura'];	$sql = mysql_query("INSERT INTO assinaturas	SET assinatura = '$assinatura'");	echo("<script>		window.location = 'assinaturas.php?mostrar=1'; 	   </script>");}............

então o código precisaria interpretar a telca Enter como se fosse o botão certo?? aí como fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que não dá pra fazer assim não Fabyo..dentro da página eu tenho 3 funções de programação: Cadastrar, Editar e Apagarentão é a ação do botão de cada formulário que vai comandar a execução da programação..se for cadastro: if (isset($_POST['criar']))se for edição: if (isset($_POST['mudar']))se for deletar: if (isset($_POST['apagar']))isso está tudo numa única página, numa única programação..se eu alterar para pegar um nome padrão o sistema não vai entender qual ação é para ser efetuada.É claro que eu poderia colocar cada ação em uma página específica (cadastrar.php/editar.php/deletar.php) aí acredito que funcionaria corretamente, mas como os códigos são relativamente simples, tudo numa página só eu economizo espaço e tempo, inclusive de execução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas você nao entendeu se você ta num formulario e clica em submit todos os campos desse formulario sera enviado

 

mas tenho uma dica pra você eu um esquema em javascript onde você envia a ação que você quer fazer e da submit dai via php ele executa

no formulario coloque um campo hidden com nome de action

 

e nos botoes:

onclick="doPost('form1', 'salvar') "

 

onclick="doPost('form1', 'excluir') "

 

onclick="doPost('form1', 'editar') "

 

javascript :

 

function doPost(formName, actionName) {

var hiddenControl = document.getElementById('action');

var theForm = document.getElementById(formName);

 

hiddenControl.value = actionName;

theForm.action = 'action.php';

theForm.submit();

}

exemplo:

 

action.php

<?php

 

$funcao = $_REQUEST["action"];

 

if (function_exists($funcao)) {

call_user_func($funcao);

}

 

function salvar()

{

 

}

 

 

function excluir()

{

 

}

 

 

function editar()

{

 

}

?>

 

eu nao gosto de passar tudo pronto mas o que eu to passando pra você é tudo dicas que funcionam sem erro nenhum

se você nao conseguir implementar posta ai

 

obs: eu fiz um sistema de cadastro onde lista os usuarios, cadastra edita e exclui tudo na mesma pagina e usando ajax ficou muito bom e pratico para o usuario

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Fabyo, eu entendi o seu esquema - bastante interessante por sinal, apesar de não ver muita diferença entre o esse e o que eu estou usando, a não ser pelo fato de que não utilizo javascript para comandar a ação. Veja o código - se tiver tempo, é claro:

<?phprequire "verifica_admin.php";?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title><?php include 'titulo.php' ?></title><link href="site.css" rel="stylesheet" type="text/css"></head><body><table width="100%"  border="0" cellspacing="0" cellpadding="0">  <tr>	<td valign="top" bgcolor="#FFFFFF"><? include "top.php"; ?></td>  </tr>  <tr>	<td valign="top"><table width="100%"  border="0" cellspacing="0" cellpadding="0">		<tr>		  <td width="200" valign="top"><?phpinclude "menu.php";?></td>		  <td valign="top" bgcolor="#FFFFFF"><table width="100%"  border="0" cellspacing="2" cellpadding="2">			<tr>			  <td valign="top"><h5>Assinaturas 				<?phpinclude "config.php";if (isset($_GET['mostrar'])){?>			  </h5>				<form name="form1" method="post" action="assinaturas.php">					<table cellspacing="0" cellpadding="2">					  <tr>						<td>Criar assinatura: </td>						<td><div align="right">							<input name="assinatura" type="text" id="assinatura" size="50">						</div></td>						<td><input name="criar" type="submit" id="criar" value="Criar"></td>					  </tr>					</table>					<p> </p>					<table border="1" cellspacing="0" cellpadding="2">					  <tr>						<td colspan="3"><div align="right">							<input name="apagar" type="submit" id="apagar" value="Apagar">						</div></td>					  </tr>					  <tr>						<td>Assinatura</td>						<td>Editar</td>						<td>Apagar</td>					  </tr>					  <?php	$resultado = mysql_query("SELECT * FROM assinaturas ORDER BY assinatura");	$num_linhas = mysql_num_rows($resultado);	if ($num_linhas == "0")	{		echo ("<td>Ainda não existe nenhuma assinatura</td>"); 	}	else	{		while ($linha = mysql_fetch_array($resultado)) 		{			$id = $linha['id_ass'];			$assinatura = $linha['assinatura'];			echo('<tr><td>' . $assinatura . '</td>');?>					  <td valign="middle"><div align="center"> <a href="assinaturas.php?cod=<?= $id ?>">Editar</a></div></td>			  <td valign="middle"><div align="center">				  <input type="checkbox" name="checkapagar[]" value="<?= $id ?>"/>			  </div></td>						<?php		}	}	?>					</table>				  </form>				<?php}if (isset($_POST['criar'])){	$assinatura = $_POST['assinatura'];	$sql = mysql_query("INSERT INTO assinaturas	SET assinatura = '$assinatura'");	echo("<script>		window.location = 'assinaturas.php?mostrar=1'; 	   </script>");}if (isset($_GET['cod'])){	$cod = $_GET['cod'];	$busca = mysql_query("SELECT * FROM assinaturas WHERE id_ass = '$cod'");	$r = mysql_fetch_array($busca);?>				  <form name="form2" method="post" action="assinaturas.php">					<table border="1" cellspacing="0" cellpadding="2">					  <tr>						<td><input name="assinatura" type="text" id="assinatura" value="<?= $r['assinatura'] ?>" size="50"></td>						<td><input name="editar" type="submit" id="editar" value="Mudar"></td>					  </tr>					</table>					<input name="cod" type="hidden" id="cod" value="<?= $cod ?>">				  </form>				<?php}if (isset($_POST['editar'])){	$cod = $_POST['cod'];	$ass = $_POST['assinatura'];	$sql = mysql_query("UPDATE assinaturas SET assinatura = '$ass' WHERE id_ass = '$cod'");	echo("<script>		window.location = 'assinaturas.php?mostrar=1'; 	   </script>");}if (isset($_POST['apagar'])){	if (!empty($_POST['checkapagar']))	{		$valor = $_POST['checkapagar'];		$chks = array_keys($_POST['checkapagar']);		for($i=0;$i<count($chks);$i++)		{			$id = $valor[$i];			mysql_query("DELETE FROM assinaturas WHERE id_ass = '$id'");		}		echo("<script>			window.location = 'assinaturas.php?mostrar=1'; 	   		</script>");	}}?>			  </td>			</tr>		  </table></td>		</tr>	</table></td>  </tr>  <tr>	<td valign="top"> </td>  </tr></table></body></html>
Vou tentar fazer do seu jeito e depois posto o resultado.. Coloca aí o endereço dessa sua página pra gente ver ..

 

eu nao gosto de passar tudo pronto ....

entendo isso.. afinal o forum serve justamente pra gente trocar conhecimentos e aprimora-los além de se aprofundar e conhecer um pouco mais sobre nossas atividades.. Já teve oportunidade em que pedi ajuda no sentido de 'pegar um código pronto' pra determinada função ou necessidade, mas procuro, antes de recorrer ao forum, esgotar minhas possibilidades, haja visto minha ainda pouca capacidade. E são pessoas como você que nos ajudam e nos estimulam a aprender mais... você consegue nos dar no mínimo o 'caminho das pedras', sem necessariamente construir a ponte, sem ser explícito demais e/ou mal-educado (como alguns participantes infelizes que tem por aí) http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao se você nao conseguir fazer eu posto um exemplo

 

e o que eu tentei te passar é legal porque você chama uma função do php via javascript assim fica bem pratico o uso de varios botoes num formulario

 

ja fiz esse esquema numa loja virtual que eu montei

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq você nao faz um input hidden com um valor qq e pega ele no if ($_POST[qqcoisa])????acho q resolveria isso ai. eu pelo menos nunca tive problemas com o enter, mesmo com varios forms numa mesma pagina.

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.