Saltar automaticamente para o próximo campo

(George Carvalho) #1

Tem como fazer em um aplicação formulário, após o preenchimento de um campo o foco seja direcionado automaticamente para o próximo?

Exemplo: Se um campo for definido com tamanho 6 (seis) e seis caracteres fossem digitados o foco iria para o próximo campo.

George Carvalho

(Rodrigo Lins) #2

Bom Dia,

George, creio que seria possível através de eventos Javascript, acho que é no evento onkeydown… mas infelizmente no ScriptCase não temos este evento disponível para uso. Até poderiamos utilizar porém, mexendo em código fonte gerado (fica muito mais complicado e não sei até que ponto será viável).

No ScriptCase temos a macro sc_set_focus que serve para dentro dos eventos Ajax, você dar foco em outro campo, porém ele seria chamado, por exemplo, no “change” do campo ou no foco, etc… não seria da forma que você está querendo.

E uma dica final, é que se quiser utilizar (ou tentar) no Javascript, para fazer referência ao form criado pelo SC seria da seguinte forma:

Ex.

document.F1.nomecampoemminusculo.focus();

OBS: Gostaria de dizer que fiquei sabendo que na V5 existirá a opção de utilizar o ENTER para mudar de campos, lembrando que o normal é através do TAB…

Espero ter ajudado de alguma forma.

Rodrigo Lins.

(George Carvalho) #3

Rodrigo,

Obrigado pelas dicas e fico feliz em saber que V5 existirá a opção de utilizar o ENTER para mudar de campos.

Tenha um bom dia.

George Carvalho

(system) #4

George, boa noite!

Se o formulário tiver poucos campos não é tão trabalhoso alterar o código fonte…

Dá pra colocar esse script no evento onInit do formulário:

// Evento onInit da aplicação
echo "
<script type='text/javascript'>
function jumpto(campoatual, proxcampo)
     {
        var tamanho_max = eval('document.F1.' + campoatual + '.maxLength;');
        var tamanho_atual = eval('document.F1.' + campoatual + '.value.length;');
        if (tamanho_atual = tamanho_max)
            { 
               eval('document.F1.' + proxcampo + '.focus();');
            }
     }
</script>";

e depois chamar a função no onkeyUp de cada campo, alterando o código fonte gerado:

<input........ onkeyUp=javascript:jumpto('nomedocampoatual','nomedoproximocampo')>

O chato é ter que refazer isso cada vez que gerar a aplicação, mas o resultado fica legal…

Se quiser testar o resultado num arquivo html:

<html>
<head></head>
<body>

<script type="text/javascript">
function jumpto(campoatual, proxcampo)
{
   var tamanho_max = eval("document.F1." + campoatual + ".maxLength;");
   var tamanho_atual = eval("document.F1."+ campoatual +".value.length;");
   if (tamanho_atual = tamanho_max)
      { 
         eval("document.F1."+ proxcampo +".focus();");
      }
}
</script>

<form name="F1">
Campo1 (max=10): <input type=TEXT maxlength=10 name="campo1" onkeyUp="javascript:jumpto('campo1','campo2')"><br>
Campo2 (max=5): <input type=TEXT maxlength=5 name="campo2" onkeyUp=javascript:jumpto('campo2','campo3')><br>
Campo3 (max=2): <input type=TEXT maxlength=2 name="campo3" onkeyUp=javascript:jumpto('campo3','campo4')><br>
Campo4 (max=10): <input type=TEXT maxlength=10 name="campo4" onkeyUp=javascript:jumpto('campo4','campo1')><br>
</form>
</body>
</html>

Espero que isso seja útil…

Att.
Robson

(George Carvalho) #5

Obrigado Robson,

Vou implementar e analisar se o trabalho vale a pena, muito obrigado.

Grato,

George Carvalho