5

Вопрос гласит все. Моя автозаполнение jquery получает свой источник от одного из моих собственных apis. Если он не может найти совпадений, он просто возвращает «нет совпадений», который затем отображается в раскрывающемся списке. Когда пользователь фокусируется на этом, текст в поле меняется на «совпадений не найдено». То, что я хочу сделать, это отобразить «нет совпадений найдено» в раскрывающемся списке, но сделать его нецелесообразным/выбираемым. Это мой код, как сейчас:Jquery autocomplete, если совпадений не найдено, отображается «совпадений не найдено» в раскрывающемся списке, но не позволяйте сосредоточиться на нем

$(document).ready(function() { 
    $("input#id_address").autocomplete({ 
     delay: 300, 
     minLength: 3, 
     source: function(request, response) { 
      $.getJSON("/pin/cache/", {q:encodeURI(request.term)}, function(results) { 
       res = results.results; 
       response($.map(res, function(item) { 
        return { 
         label: item.address, 
         value: item.address, 
         lat: parseFloat(item.lat), 
         lng: parseFloat(item.lng) 
        } 
       })); 
      }); 
     }, 
     select: function(event, ui) { 
      if (ui.item.value == 'no matches found') { 
       return; 
      } 
      else { 
       $("#id_address").val(ui.item.value); 
       var pos = new google.maps.LatLng(ui.item.lat, ui.item.lng); 
       map.setCenter(pos); 
       map.setZoom(14); 
       placeMarker(pos); 
      } 
     }, 
    }); 
}); 

Как вы можете видеть, я использую если еще цикл для проверки «без каких-либо найденных совпадений» в выберите: функцию ничего не делать, если нет совпадений найдено не выбрано. Однако он по-прежнему заполняет текст «совпадений не найдено» в фокусе. Я хочу, чтобы функции по умолчанию заполняли текст в фокусе, когда совпадения найдены, но когда совпадений не найдено, выпадающий список должен быть нецелесообразным. Какие-либо предложения ?

ответ

2

Одним из возможных решений является размещение события на обработчике select focus(), который проверяет наличие текста «совпадений не найдено», и если это сразу же размывает его.

$("input#ip_address").focus(function(){ 
    if($(this).text()=="no matches found") { 
     $(this).blur(); 
    } 
}); 
+0

Спасибо, это сработало отлично. – tapan

0

Вы можете использовать событие JavaScript, чтобы отменить выбор «не соответствуют» или использовать Div смоделированы выпадающего списка, где не может быть выбран «не ровня».