Pergunta

Estou pensando em usar o preenchimento automático da UI do jQuery widget para implementar a pesquisa do usuário por nome ou sobrenome.Parece que, por padrão, o preenchimento automático procura palavras por sequência de caracteres, independentemente de sua ocorrência em uma palavra.Então, se você tiver dados como: javascript, asp, haskell e você digita 'as' você obterá todos os três.Eu gostaria que correspondesse apenas ao início da palavra.Então, no exemplo acima você obtém apenas 'asp'.Existe uma maneira de configurar o widget de preenchimento automático para fazer isso?

Em última análise, seria ainda melhor correspondência pelo início do nome ou sobrenome como no Gmail.

Observação:Estou tentando descobrir uma maneira de fazer isso usando especificamente o widget jQuery UI.Como já estou usando jQuery UI em meu projeto, pretendo continuar com ele e tentar não adicionar bibliotecas adicionais ao meu aplicativo da web.

Foi útil?

Solução

não.Seus processos são executados em diferentes espaços de endereçamento virtual.Que teria sido uma vulnerabilidade grave de segurança se você pudesse ler o espaço de memória alocado por outro processo.

Editar: considere usar algo como um webbowsercontrol em seu processo original.Dessa forma, você fria recupera facilmente a página que ela exibe.

Outras dicas

Eu uso o preenchimento automático da Devbridge. http://www.devbridge.com/projects/autocomplete/jquery/

Combina com os personagens iniciais, apenas.

alt text

Quanto à correspondência com base no nome ou sobrenome, você só precisaria fornecer uma lista de pesquisa com o primeiro e o sobrenome.

Exemplo de uso:

  var wordlist = [
      'January', 'February', 'March', 'April', 'May', 'June',
      'July', 'August', 'September', 'October', 'November',
      'December' ]; 

      var acOptions = {
          minChars:2,
          delimiter: /(,|;)\s*/, // regex or character
          maxHeight:400,
          width:300,
          zIndex: 9999,
          deferRequestBy: 10, // miliseconds

          // callback function:
          onSelect: function(value, data){
              //$('#input1').autocomplete(acOptions);
              if (typeof data == "undefined") {
                  alert('You selected: ' + value );
              }else {
                  alert('You selected: ' + value + ', ' + data);
              }
          },

          // local autosuggest options:
          lookup: wordlist
      };

o lookup A opção que você passa para inicializar o controle de preenchimento automático pode ser uma lista ou um objeto. O acima mostrou uma lista simples. Se você deseja alguns dados anexados às sugestões que são devolvidas, faça o lookup Opção Um objeto, como este:

var lookuplist = {
    suggestions:   [ "Jan", "Feb", "Mar", "Apr", "May" ],
    data :         [ 31, 28, 31, 30, 31, ]
};

THX Cheeso para intrometer jsbin.com,

Eu estendi seu código para oferecer suporte a partidas de primeiro e último nome também.

  $("#input1").autocomplete({
      source: function(req, responseFn) {
          addMessage("search on: '" + req.term + "'<br/>");

          var matches = new Array();
          var needle = req.term.toLowerCase();

          var len = wordlist.length;
          for(i = 0; i < len; ++i)
          {
              var haystack = wordlist[i].toLowerCase();
              if(haystack.indexOf(needle) == 0 ||
                 haystack.indexOf(" " + needle) != -1)
              {
                  matches.push(wordlist[i]);
              }
          }

          addMessage("Result: " + matches.length + " items<br/>");
          responseFn( matches );
      }
  });

Demo: http://jsbin.com/ufimu3/

digite 'an' ou 're'

Se você quiser pesquisar o início de cada palavra na string, uma solução mais elegante para o henchman é pegar o cheeso, mas apenas usar o caractere especial do limite da palavra regexp:

var matcher = new RegExp( "\\b" + re, "i" );

Exemplo: http://jsbin.com/utojoh/2 (tente pesquisar por 'bl')

Outro plug-in de preenchimento automático do jQuery isso opcionalmente pesquisa apenas no início de cada item (a opção é matchContains=false, Acho que esse também é o padrão).

Dada a ausência de tal opção no plug -in JQuery UI, acho que você terá que usar um plug -in diferente ou reescrever o que você está usando agora.

Onde você está obtendo os dados para preencher o preenchimento automático? É de um banco de dados? Nesse caso, você pode fazer o que quiser em sua consulta e retornar apenas os resultados que correspondem ao início de cada palavra (primeiro/sobrenome)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top