Campo com Auto Complete sem captura, como pegar o valro digitado?

hoje n tive tempo, mas chegar em casa eu te dou um help.

é quase certeza o que o Haroldo falou… não tem como mesmo… tentei varias vezes de autocomplete passar paramentros para pegar o valor digitado num campo do tipo auto complete passando como variavel para a captura em outro campo. Mais se tiver alguma ideia, por favor passe pra gente

Estou vendo uma forma de fazer isso com o sc atual … e posto jaja se tem como :-p

Diga-se de passagem…
“Um absurdo o valor digitado não estar disponível na janela”.

Nao entendi … mas seguinte. Disponivel esta, so precisa manipular.

Campo auto complete esta sendo utilizando um plugin do jquery que so seta valor após voce clicar no item.
Vou explicar como funciona e ai vcs podem fazer.
Um campo chamado, por ex de cidade, esta com auto complete.
Entao no form o campo cidade esta com display none e é criado um novo campo cidade_autocomp.
Esse _autocomp é que faz o combo e apos vc clicar no item escolhido é que é passado o valor para o campo cidade.

criei um campo cidade_new so pra fazer o controle, tirei o botao de update da tela e criei um botao javscript que faz o seguinte:
document.F1.cidade_new.value = document.F1.cidade_autocomp.value;
nm_atualiza (‘alterar’); return false;

com isso vc pega o valor do campo que esta no auto complete.
ai no validate vcs fazem seus proprios codigos, da um select na base, ve se existe o digitado, se n existir insere …

espero ter ajudado …

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.

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.

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.

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.

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.

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.

Legal, isso ajuda a tornar o SC mais produtivo com versatilidade e liberdade de código.

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.

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 …

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.

viu a outra dica?

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.

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

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.

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.