[RESOLVIDO] Ajuda com submit via enter em form controle

Pessoal, tem algum jeito de dar um submit no form controle através do enter no ultimo campo? Pesquisei aqui mas só achei um tópico antigo e sem resposta.

Já tentei de várias formas e não consegui.

Agradeço a ajuda.

Rodrigo

Rapaz, vou postar uma meia ajuda, rsrsrs.

Faço isso com jQuery em meus projetos que não são feitos em SC.

$("#id_campo").focus(function(){

            $(this).keypress(function(e){
		
		var interacao = $(this).val();

		if(e.keyCode == 13 && interacao == "")  // Se ao teclar enter o campo for vazio, não faz nada.
		{
			e.preventDefault();				
		}
		
		if(e.keyCode == 13 && interacao != "") // Se ao teclar enter o campo não for vazio, chama uma função
		{
		        // Aqui a função que chama o submit.
		}
	
	});

});

Nunca tentei usar jQuery em aplicações SC. Mas o Haroldo já postou exemplos aqui no fórum.

Cleyton, obrigado pela ajuda.
Na verdade tenho que saber como implementar seu código no sc, conhecimento zero no assunto. kkkk
Vou pesquisar.

Se o Haroldo passar por aqui vou ver se ele me dá uma forcinha tb. Vi num post dele que ele usa leitor de barras com form controle, é o mesmo esquema que quero implementar.

Obrigado!
Rodrigo

Mais ninguém?

no evento ajax onchange ou onblur do último campo já tentou usar :

sc_ajax_javascript(‘nm_atualiza’, array(“alterar”));

Haroldo obrigado pela dica! Foi muito útil.
Já funcionou a parte da gravação.
Só um detalhe:
Usando a tecla tab no último campo, o form controle grava o registro e zera os campos
Usando enter o registro é gravado, mas os campos não são zerados enquanto eu permanecer na página. Se eu sair com um simples alt+tab e voltar os campos são limpos, não entendi porque.

O form é bem simples, 2 campos apenas, código e valor.

No onValidateSuccess, coloquei:
$sql = “INSERT INTO teste (cod, val) VALUES (’{produto}’, ‘{valor}’)”;
sc_exec_sql($sql);
{produto}="";
{valor}="";
sc_redir(control_digitacao_rapida_pedido);

No onLoad:
sc_set_focus(‘produto’); (esse só funciona na primeira chamada a apl, depois deixa de funcionar)

No evento ajax valor_onChange:
sc_ajax_javascript(‘nm_atualiza’, array(“alterar”));

Agora só preciso fazer com que o enter faça o submit e na recarga do form, o foco esteja no campo1.
Também já marquei no sc a opção de foco inicial no campo1, mas só funciona na primeira chamada ao form.
Obrigado.
Rodrigo.

Pessoal,
Seria possível usar apl blank para criar este maldito formulário?
São apenas 2 campos, código e valor, sem validação, para entrada rápida via tecla enter.

Nessa sequência:
Foco no campo Código, digita-se o código e tecla
Foco no campo Valor, digita-se o valor e tecla

Este último enter salva os dados na base e retorna ao form, limpando os valores e aguardando nova digitação.
Existiria um 3º campo oculto, com valor preenchido através de uma variável global.

Algo muito simples, mas com apl controle não teve jeito, pelo menos pra mim. Só funciona usando TAB, com enter não teve jeito.

Obrigado a todos.
Rodrigo

Acabei de achar esse código na net, será que serve?

Ninguém no fórum usa apl controle pra digitação apenas pelo teclado? Leitor de código de barras???

eu utilizo controle código de barras ou digitação via teclado.

To com um cliente me apurrinhando o juizo pq não pode lançar os itens do pedido apenas pelo teclado, tem que ficar cliando em salvar no grid editável.

Consegui fazer na apl controle que o ultimo campo grave o registro, mas ele não volta com foco no primeiro campo e limpa os conteudos pra um novo registro nem a pau.

Qual o evento que realiza o registro?
Qual aplicação você quer que realize os outros eventos?

No post 6 tá bem detalhado, a questão é fazer funcionar com enter, pois com tab já funciona.

Olá Rodrigo

Podes testar o seguinte codigo no event onLoad.


?>
<script>
$(document).ready(function() {
	document.F1.id_sc_field_produto.value="";	
	document.F1.id_sc_field_valor.value="";		
});
$(document).bind('keypress', function (e) {    
	idcampo=$("*:focus").attr("id");
	if (e.which==13 && idcampo=="id_sc_field_produto"){		
		document.getElementById("id_sc_field_valor").focus();
	}
	if (e.which==13 && idcampo=="id_sc_field_valor"){		
		document.F1.submit();
	}
});
</script>
<?php

Abraço

Tem aqui um exemplo.

http://suporte.logiciel.pt/sc6/control

MikeC, muitíssimo obrigado, funcionou com perfeição e de primeira!!!

Jovito, essa dica deveria ir pra associação, que acha?

MikeC, fiz uma pequena modificação pra adaptar a minha necessidade:

[code]?>

<?[/code] Está funcionando perfeitamente, mais uma vez muito obrigado, matou a pau! Vou inclusive usar seu código pra estudar um pouco de javascript. Rodrigo

Para estudar javascript tem um livro bom, ele é interativo.

http://eloquentjavascript.net

Abr.

MikeC, você não tem este exemplo para SCv7 ?

obrigado