Autor Tópico: Campo com Auto Complete sem captura, como pegar o valro digitado?  (Lida 9400 vezes)

Haroldo

  • Expert
  • *****
  • Mensagens: 6274
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #15 Online: Agosto 31, 2010, 11:23:12 am »

O que tentamos fazer é:
Pegar o que foi digitado na janela do campo {cidade} dentro  evento onchange do campo {cidade}:

Se eu digitei "SAO",  vai me apresentar uma lista de cidades que começam com "SAO",
mas eu quero jogar dentro de uma variável php o que foi digitado: "SAO", no evento onchange do campo {cidade}, mostrando ou não a lista com as opções.

Quando você digita algo o evento onchange não é acionado até você clicar na lista do combo.

É o que eu faria com um campo do tipo texto comum.

Quando usamos isso? Um dos usos seria: tenho um determinado campo, quando digito o valor uma lista de opções vai me aparecendo, mas caso não mostre nessa lista um valor desejado, eu inclua na tabela o que foi digitado automaticamente no evento onchange.

Hoje para obter esse recurso tenho que ter uma janela texto, e do lado uma select que move o valor selecionado para a janela texto, mas se não tiver na nesse select o valor desejado eu digito na janela texto o valor, que é incluso na tabela. Ou utilizo um Select Distinct no proprio campo.


« Última modificação: Agosto 31, 2010, 11:30:14 am por Harold »

Diogo Toscano

  • Administrator
  • Expert
  • *****
  • Mensagens: 590
    • :: ScriptCase ::
    • Email
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #16 Online: Agosto 31, 2010, 11:30:14 am »
Exato, pq o que esta sendo exibido é outro campo. Por isso dei essa sugestão.
Se vc substitui os botoes, com o javascript vc captura o campo e atribui a outro.

Desse forma vc pode fazer de forma transparente para o usuario, se existir, deixa o que ele digitou, se nao existir, vc da o insert e atribui a chave.

É so uma medida paliativa.

Diogo Toscano

  • Administrator
  • Expert
  • *****
  • Mensagens: 590
    • :: ScriptCase ::
    • Email
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #17 Online: Agosto 31, 2010, 11:33:55 am »
Veja bem ... tenho o campo cidade que é auto complete.

Tiro o botao de update.  Substituo o botao de update por um botao meu javascript com o seguinte codigo:

document.F1.cidade_new.value = document.F1.cidade_autocomp.value;
nm_atualiza ('alterar'); return false;

Isso significa que, o valor do campo autocomplete que foi digitado sera atribuido ao meu campo {cidade_new}.

Na hora que a pessoa clicar no botao, irei capturar esse valor jogando o valor para o campo cidade_new e estou chamando a funcao de atualizar.

No onvalidate iria checar se o que foi digitado existe na base, se exitir, beleza, so atribuo ao campo original cidade, se nao exisitr, daria o insert na tabela de relacionamento e atribuiria normal ao campo cidade.

é uma medida que permite que o que a pessoa digitou ser cadastrado após ele chamar o botão de insert ou delete.

Haroldo

  • Expert
  • *****
  • Mensagens: 6274
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #18 Online: Agosto 31, 2010, 11:34:32 am »
Medidas paliativas eu costumo tomar com situações extremas, e quando exigem certa complexidade, mas nesse caso, o uso é direto e constante, tornando improdutivo o Desenvolvimento, acredito que uma pequena  mudança no código SC seria mais adequada e viável nesse caso.


Exato, pq o que esta sendo exibido é outro campo. Por isso dei essa sugestão.
Se vc substitui os botoes, com o javascript vc captura o campo e atribui a outro.

Desse forma vc pode fazer de forma transparente para o usuario, se existir, deixa o que ele digitou, se nao existir, vc da o insert e atribui a chave.

É so uma medida paliativa.

Diogo Toscano

  • Administrator
  • Expert
  • *****
  • Mensagens: 590
    • :: ScriptCase ::
    • Email
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #19 Online: Agosto 31, 2010, 11:37:18 am »
Bom, so tentei ajudar, mas ... entao vou repassar pro pessoal de implementação a sugestão.

Pensei que vc queria algo pra rodar agora. Mas ok ... vou me abster mais da proxima vez, nao irei tao a fundo.

Haroldo

  • Expert
  • *****
  • Mensagens: 6274
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #20 Online: Agosto 31, 2010, 11:37:57 am »
Eu gostaria de usar onchange do campo em questão, não a onvalidate, pois o campo sofreu alteração com a digitação, como é em qualquer outro campo.


Veja bem ... tenho o campo cidade que é auto complete.

Tiro o botao de update.  Substituo o botao de update por um botao meu javascript com o seguinte codigo:

document.F1.cidade_new.value = document.F1.cidade_autocomp.value;
nm_atualiza ('alterar'); return false;

Isso significa que, o valor do campo autocomplete que foi digitado sera atribuido ao meu campo {cidade_new}.

Na hora que a pessoa clicar no botao, irei capturar esse valor jogando o valor para o campo cidade_new e estou chamando a funcao de atualizar.

No onvalidate iria checar se o que foi digitado existe na base, se exitir, beleza, so atribuo ao campo original cidade, se nao exisitr, daria o insert na tabela de relacionamento e atribuiria normal ao campo cidade.

é uma medida que permite que o que a pessoa digitou ser cadastrado após ele chamar o botão de insert ou delete.

Haroldo

  • Expert
  • *****
  • Mensagens: 6274
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #21 Online: Agosto 31, 2010, 11:39:36 am »
Legal, isso ajuda a tornar o SC mais produtivo com versatilidade e liberdade de código.

Bom, so tentei ajudar, mas ... entao vou repassar pro pessoal de implementação a sugestão.

Pensei que vc queria algo pra rodar agora. Mas ok ... vou me abster mais da proxima vez, nao irei tao a fundo.

Diogo Toscano

  • Administrator
  • Expert
  • *****
  • Mensagens: 590
    • :: ScriptCase ::
    • Email
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #22 Online: Agosto 31, 2010, 11:43:02 am »
quer uma dica mais simples? ou espera que a gente implemente isso no sc? é gambi :-p

pq na verdade eu respondo ... como usuario da ferramenta. o que posso responder pra ajudar voces. se preferirem tiro o nome "administrador", me cadastro com outro nome e ai posso responder de igual pra igual. Pq minhas respostas nao sao "da" empresa, to tentando dar um help por fora.
« Última modificação: Agosto 31, 2010, 11:45:08 am por diogo »

Diogo Toscano

  • Administrator
  • Expert
  • *****
  • Mensagens: 590
    • :: ScriptCase ::
    • Email
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #23 Online: Agosto 31, 2010, 11:48:02 am »
Bom, vou falar assim mesmo pq sou curioso.

O nome do meu form é: form_public_adm_clientes
O nome do meu campo é: cidade

criei um evento ajax no onchange da cidade.

fui na ajuda do campo cidade, informei o tipo de help texto e digitei o seguinte codigo:

<input type="button" value="Cadastrar" onclick="document.F1.cidade.value=document.F1.cidade_autocomp.value; do_ajax_form_public_adm_clientes_event_cidade_onchange()";

Ou seja, do lado do autocomplete colocou um botao cadastrar, que vai atribuir o digitado a cidade e chamar o change ... e ai vc programa normal .. se existe n faz nada, se n existir cadastra no banco e da uma mensagem cadastrado com sucesso ...

Haroldo

  • Expert
  • *****
  • Mensagens: 6274
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #24 Online: Agosto 31, 2010, 11:56:52 am »
Sua ajuda é de extrema importância para todos, por favor não se omita.
E sua sugestão aqui pode valer para muitos, inclusive eu possa vir a utilizar em algum dos meus diversos casos, mas aceite também as nossas opiniões a respeito de determinados assuntos, não podemos só ficar no paliativo, essa é uma questão antiga e posto aqui o retorno  do suporte:
------------------------------------------------------------------------------------------
Prezado Haroldo,
atualmente não há como fazer isso. O campo tipo auto-complete hoje é feito para facilitar o preenchimento dos dados de forma que se for digitado um valor e ele não for encontrado/selecionado, o campo retorna nulo.

Atenciosamente,

Victor Pessoa
Netmake Soluções em Informática
------------------------------------------------------------------------------------------
Esta solicitação refiz a 3 meses, a primeira solicitação para alteração deste tipo de campo eu fiz no início de 2007, pois como todo resultado de suporte não atendido, a resposta é a mesma:
Enviaremos como sugestão para o Departamento de Desenvolvimento.


quer uma dica mais simples? ou espera que a gente implemente isso no sc? é gambi :-p

pq na verdade eu respondo ... como usuario da ferramenta. o que posso responder pra ajudar voces. se preferirem tiro o nome "administrador", me cadastro com outro nome e ai posso responder de igual pra igual. Pq minhas respostas nao sao "da" empresa, to tentando dar um help por fora.

Diogo Toscano

  • Administrator
  • Expert
  • *****
  • Mensagens: 590
    • :: ScriptCase ::
    • Email
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #25 Online: Agosto 31, 2010, 11:57:44 am »
viu a outra dica?

Haroldo

  • Expert
  • *****
  • Mensagens: 6274
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #26 Online: Agosto 31, 2010, 11:59:57 am »
Para um dos casos essa sugestão é muito boa, valeu Diogo.

** Nem sempre vou querer que ação seja do usuário, poderei desejar fazer isso internamente, e nem sempre será uma inserção no banco, poderá ser apenas uma validação do valor digitado.

Bom, vou falar assim mesmo pq sou curioso.

O nome do meu form é: form_public_adm_clientes
O nome do meu campo é: cidade

criei um evento ajax no onchange da cidade.

fui na ajuda do campo cidade, informei o tipo de help texto e digitei o seguinte codigo:

<input type="button" value="Cadastrar" onclick="document.F1.cidade.value=document.F1.cidade_autocomp.value; do_ajax_form_public_adm_clientes_event_cidade_onchange()";

Ou seja, do lado do autocomplete colocou um botao cadastrar, que vai atribuir o digitado a cidade e chamar o change ... e ai vc programa normal .. se existe n faz nada, se n existir cadastra no banco e da uma mensagem cadastrado com sucesso ...
« Última modificação: Agosto 31, 2010, 01:17:11 pm por Harold »

Diogo Toscano

  • Administrator
  • Expert
  • *****
  • Mensagens: 590
    • :: ScriptCase ::
    • Email
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #27 Online: Agosto 31, 2010, 12:02:02 pm »
dessa forma permite q o usuario na ponta decida se qr cadastrar ou nao.
com isso vc pode programar normalmente no evento ajax.

foi o melhor que achei, com menos alteração de codigo :-p

Haroldo

  • Expert
  • *****
  • Mensagens: 6274
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #28 Online: Agosto 31, 2010, 12:04:24 pm »
Sim, vi sim. Vou deixar o código aqui guardado.
Mas mesmo assim, não deixa de sugerir novamente essa implementação, para podermos usar normalmente o PHP dentro do envento onchange do campo.
Programação JavaScript, costumam sofrer com atualizações de versões  do SC.
Sua dedicação é extremamente estimulante em nossos debates, obrigado mesmo.


viu a outra dica?

Haroldo

  • Expert
  • *****
  • Mensagens: 6274
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re: Campo com Auto Complete sem captura, como pegar o valro digitado?
« Responder #29 Online: Agosto 31, 2010, 12:45:07 pm »
A conversa sobre esse tipo de campo é muito interessante.
Eu particularmente acho a idéia desse tipo de campo excelente, mas o uso dele se tornou inviável justamente por não podermos tratar o valor digitado, e esse campo é enganador para usuário final, vejam uma situação que passei:
No meu site resolvi criar o formulário de contatos em SC, para ter um melhor controle de quem visitava meu site, e qual o perfil deste usuário, e atribui justamente ao campo cidade (obrigatório), a propriedade auto-complete, depois de uma semana tive que trocar rapidamente para combo select este campo, porque?

Vejam bem: O formulário estava na internet, o que causava as vezes uma demora significativa para montar a lista de opções auto-complete, e o usuário, não sabendo que tinha que esperar aparecer uma lista para selecionar a cidade (afinal o campo esta ali com a janela aberta para se digitar algo), o mesmo digitava o nome de sua cidade por completo (sem selecionar na lista pois esta ainda não tinha se apresentado, só que não é possível validar o que foi digitado, causando erro de cidade inválida. Choveram emails para nós a respeito, e aparentemente isso se tornava um bug da nossa tela de cadastro de contatos.

Por isso parei de usar esse tipo de campo, e substituí todos que já usava por combo. Infelizmente o campo auto-complete, apesar de eu achar uma solução inteligente de janela para digitação, não é viável, por esse pequeno detalhe de não permitir interagir na onchange com seu valor digitado.

« Última modificação: Agosto 31, 2010, 01:14:30 pm por Harold »