Всегда показывать список автозаполнения, даже если поиск не соответствует - PullRequest
0 голосов
/ 30 мая 2018

У меня есть поле для автозаполнения, и по типу я захожу в PHP / Database для получения соответствующих опций.

Дело в том, что мой список предложений не совсем соответствует тексту.Я объясняю:

Скажи, что я набрал "Джон".Мой список принесет из базы данных «Джон Доу», «Джонатан» и т. Д. Только «Джонатан» будет отображаться в качестве предложения для входных данных, но они мне все нужны, потому что он учитывает приближение (на моем элементе soundexбэкэнд-поиск).

Мой код JavaScript / Ajax:

function prePatientsList(){
      //I'm limiting search so it only starts on the second character
    	if (document.getElementById("name").value.length >= 2) { 

            try
            {
            	listExecute.abort();
        	}catch(err) {
        	   null;
        	}
            var nome= $("#name").val();
            var nomeList = "";
            listExecute = $.ajax({
                    url: '/web/aconselhamento/Atendimento/PrePacientesAutocomplete',
                    type: "POST",
                    async: true,
                    datatype: 'json',
                    data: { nome: nome}
             }).done(function(data){
            	 source = JSON.parse(data);
             });
            
            
            $(function() {
            	$("input#nome").autocomplete({
                    source: source,
                    // I know I probably don't need this, but I have a similar component which has an URL as value, so when I select an option, it redirects me, and I'll apply you kind answer on both.
                    select: function( event, ui ) {                    	
                        ui.item.label;
                    }
                });
            });
    	}     

    }

Спасибо.

1 Ответ

0 голосов
/ 30 мая 2018

Я думаю, что вам нужно было бы установить удаленную конечную точку непосредственно в качестве источника автозаполнения (например, аналогично https://jqueryui.com/autocomplete/#remote), чтобы это был бэкэнд, который выполняет всю фильтрацию. Сейчас автозаполнение фактически думает, что выпередал ему static список опций, из которых должна происходить дальнейшая фильтрация, и поэтому он решает обработать саму фильтрацию.

Ваш код может быть таким простым, как я думаю, не нужночтобы иметь отдельный обработчик или ajax-запрос вне области автозаполнения.

$(function() {
  $("input#nome").autocomplete({
    minLength: 2, //limit to only firing when 2 characters or more are typed
    source: function(request, response) 
    {
      $.ajax({
        url: '/web/aconselhamento/Atendimento/PrePacientesAutocomplete',
        type: "POST",
        dataType: 'json',
        data: { nome: request.term } //request.term represents the value typed by the user, as detected by the autocomplete plugin
     }).done(function(data){
         response(data); //return the data to the autocomplete as the final list of suggestions
     });
    },
    // I know I probably don't need this, but I have a similar component which has an URL as value, so when I select an option, it redirects me, and I'll apply you kind answer on both.
    select: function( event, ui ) {                     
      ui.item.label;
    }
  });
});

См. http://api.jqueryui.com/autocomplete/#option-source для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...