Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JullySL

[Resolvido] Autocomplete e completando campos com valores em Jquery e Asp Net MVC

Recommended Posts

Boa tarde! 

Gostaria da ajuda de vocês, fiz um autocomplete na tela de cadastros de chamados, para quando o usuário estiver cadastrando um um chamado, se for cliente novo ou existente, se ele digitar Maria e tiver 3 Marias cadastradas ele irá selecionar a Maria que se refere o chamado, selecionando a Maria existente quando ele pressionar para o próximo campo eles serão autopreenchidos com as informações do cliente que está na base de dados, porém quando o cliente não existir apenas dar continuidade ao cadastro. O Problema do meu código é:
Tenho cadastrado no cadastro de clientes:
Cliente1: Maria Santos
Cliente 2: Maria Virginia
Se eu selecionar Maria Virginia ele trás os dados tanto da Maria Santos quanto da Maria Virginia,sendo que se eu selecionei Maria Virginia não tem por que ele trazer dados de outro cliente certo?! segue script
Crontroller:

 

Controller

[HttpGet]
        public ActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public JsonResult Index(string Prefix)
        {
            ClienteAplicacao appCliente = new ClienteAplicacao();
            var ListarCliente = appCliente.ListaTodos();
            
            var ClienteNome = (from N in ListarCliente
                               where N.Nome.StartsWith(Prefix)
                               select new { N.Nome, N.Id, N.Email });
            return Json(ClienteNome, JsonRequestBehavior.AllowGet);
        }
        public JsonResult ClienteList(string Id)
        {
            ClienteAplicacao appCliente = new ClienteAplicacao();
            var ListaCliente = appCliente.ListaTodos();
           
            var resultado = (from c in ListaCliente
                             where (c.Nome.ToLower().Contains(Id.ToLower()))
                             select c).ToList();       
            return Json(resultado, JsonRequestBehavior.AllowGet);
        }

Jquery

 

   

 $(document).ready(function () {
        $("#Nome").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/Autocom/Index",
                    type: "POST",
                    dataType: "json",
                    data: { Prefix: request.term },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return {
                                label: item.Nome + ", " + item.Email,
                                value: item.Nome
                                
                            };
                            //return data;                          }))
                        $('#Nome').blur(function () {
                            var aChk = document.getElementsByName('Nome');
                            var texto = texto + (aChk.value)
                            $('#lbairro').val(texto);
                            alert(texto);
                            $.getJSON('/Autocom/ClienteList/' + $('#Nome').val(), function (data) {
                                var items = '';
                                $.each(data, function (i, cliente) {
                                    
                                    items += 'E-mail:<input type="email" id="Email" name="Email" value="' + cliente.Email + '" class="txtInputMax" />';
                                    
                                });
                                
                                $('#rData').html(items);
                            });
                        })
                    }
                })
            },
            
        });
        
    })



Formulário

 

<input id="NomeCliente" name="NomeCliente" type="hidden" value="" />
    <div>
        Nome:
        <input name="Nome" id="Nome" type="text" class="txtInputMax" />
    </div>
    <div class="editor-field" id="rData">
            E-mail:
            <input name="Email" id="Email" type="text" class="txtInputMax" />
    </div>

Agradeço quem puder ajudar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Veja seu select:

var resultado = (from c in ListaCliente
                             where (c.Nome.ToLower().Contains(Id.ToLower()))
                             select c).ToList(); 

Ele está retornando uma lista.

 

O que indico, é que quando fizer o autocomplete, anexar o id junto ao nome, e quando for selecionado uma pessoa da lista, passar o id como parâmetro, e não o nome.

 

E se for pra fazer com o  nome, sugiro que faça o seguinte:

var resultado = (from c in ListaCliente
                             where (c.Nome.ToLower() == Id.ToLower())
                             select c).FirstOrDefault();

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por luiz monteiro
      Olá. Tenho 3 formulários em uma mesma pagina, onde cada um tem 1 input type text.
      O que preciso é recuperar o nome desses inputs e o valor correspondente ao formulário submetido.
      =============
      form name="formulario1" id="formulario1"
      input type="text" name="nome1" value="valor1" /form
      form name="formulario2" id="formulario2"
      input type="text" name="nome2" value="valor2" /form
      form name="formulario3" id="formulario3"
      input type="text" name="nome3" value="valor3" /form
      =============
      ..........
      var formulario_submetido = document.getElementById("formulario1"); formulario_submetido.addEventListener('submit', function(e) { e.preventDefault(); //tentei console.log(document.querySelectorAll('#'+this.id + ' input').name); //tentei var formula = new FormData(formulario_submetido); console.log(formula.input['type=text'].name); //tentei console.log(formula.get(input['type=text']).name); ..........
        no console.log(e), ele está nessa hierarquia   form -> srcElement -> input -> attributes -> name 
      Como recupero o valor do name dele e o valor do value?
       
      Agradeço desde já.
    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por clovis.sardinha
      Tenho uma consulta de autocomplete no bd que funciona no servidor local e não roda no servidor da web. 
      Ao enviar a consulta no servidor local  aparece no console :Fetch terminou o carregamento: GET ".../Cidade?cidade=sao%20paulo". A pesquisa é feita normalmente.
      Quando mando a mesma pesquisa para o servidor web(locaweb) aparece no console: Fetch terminou o carregamento: GET "..../Cidade?cidade=sao%2520paul".
      O número 25 aparece só no servidor web. Pelo que pesquisei 25 significa %, ou seja, está duplicando o caractere %. 
      Não consegui utilizar nenhuma função para evitar que isto ocorra. Alguém sabe se há alguma configuração no servidor web que possa ser alterada para evitar essa duplicação?
       
    • Por ILR master
      Salve galera.
       
      Vou publicar um evento e quero colocar um Cronômetro regressivo que mostre em tempo real os dias, horas e minutos que faltam para determinada data, tipo:.
      Faltam 5 dias, 12:30:00 para inauguração.
       
      Qdo chegar no dia, quero que apenas apareça uma mensagem.
       
      Alguém pode me ajudar?
    • Por clovis.sardinha
      Estou em um impasse pois sei pouco de javascript. Estou fazendo um autocomplete com CI4 e Javascript.
      Consigo gerar, através do controllers/model do CI4 um arquivo em json, mas não consigo retorná-lo para o javascript para poder mostrar as opções para consulta. 
      O console.log mostra que estou obtendo o  json() { [native code] }.
      Segue os dois arquivos para ver se alguém me ajuda.
      //arquivo cidade.js async function carregar_cidade(valor) { if (valor.length >= 3) { //console.log("Pesquisar:" + valor); const dados = fetch('Testes/?cidade='+valor, { method: "get", headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } }); const resposta = (await dados).json; console.log(resposta); var html = "<ul class='list-group position-fixed'>"; html += "<li class='list-group-item'>" + resposta['cid_nome'] + "</li>"; html += "</ul>"; } } <?php //arquivo Testes.php namespace App\Controllers; use App\Models\CidadeModel; /** NÃO MANDAR PARA O SERVIDOR - APENAS TESTES DE FUNÇÕES E OUTROS ELEMENTOS DO CI4 */ class Testes extends BaseController{ protected $tbCidades; public function __construct(){ $this->tbCidades = new CidadeModel(); } public function index(){ $request = \Config\Services::request(); $client = \Config\Services::curlrequest(); $cidades=[]; if($get=$request->getGet()){ $cities=$get['cidade']; $cidadeFiltrada=$this->tbCidades->getCidByName($cities); $cidades= json_encode($cidadeFiltrada); //dd($cidades); } echo view('Testes/testes'); } public function salvar(){ $request = \Config\Services::request(); if($post=$request->getPost()){ dd($post); } } } <!doctype html> <html lang="pt-br"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> <title>Autocomplete</title> </head> <body> <div class="container"> <h1 class="mt-4 mb-4">Formulário</h1> <form class="row g-3"> <div class="col-12"> <label for="cidade" class="form-label">Cidade</label> <input type="text" name="cidade" class="form-control" id="cidade" placeholder="Pesquisar cidade" onkeyup="carregar_cidade(this.value)"> </div> <span ></span> </form> </div> <!-- Optional JavaScript; choose one of the two! --> <!-- Option 1: Bootstrap Bundle with Popper --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script> <script src="assets/js/cidade.js"></script> </body> </html>
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.