5

Câu hỏi nói lên tất cả. Jquery autocomplete của tôi lấy nguồn của nó từ một trong những apis của riêng tôi. Nếu nó không thể tìm thấy bất kỳ kết quả phù hợp, nó chỉ trả về "không tìm thấy kết quả phù hợp" mà sau đó được hiển thị trong trình đơn thả xuống. Khi người dùng tập trung vào điều này, văn bản trong hộp sẽ thay đổi thành "không tìm thấy kết quả phù hợp". Những gì tôi muốn làm là hiển thị "không tìm thấy kết quả phù hợp" trong trình đơn thả xuống, nhưng làm cho nó không tập trung/có thể lựa chọn. Đây là mã của tôi như bây giờ:Jquery tự động hoàn thành, nếu không tìm thấy kết quả phù hợp "không tìm thấy kết quả phù hợp" trong danh sách thả xuống nhưng không cho phép tập trung vào nó

$(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); 
      } 
     }, 
    }); 
}); 

Như bạn thấy, tôi đang sử dụng một vòng lặp nếu khác để kiểm tra "không có trận đấu tìm thấy" trong chọn: chức năng để làm gì nếu không có trận đấu thấy được chọn. Tuy nhiên, nó vẫn điền vào văn bản "không tìm thấy kết quả phù hợp" trên tiêu điểm. Tôi muốn chức năng mặc định điền văn bản vào tiêu điểm khi tìm thấy các kết quả phù hợp, nhưng khi không tìm thấy kết quả phù hợp, trình đơn thả xuống sẽ không tập trung được. Bất kỳ đề xuất ?

Trả lời

2

Một giải pháp có thể là đặt một sự kiện vào trình xử lý focus() của lựa chọn kiểm tra văn bản 'không tìm thấy kết quả phù hợp' và nếu như vậy ngay lập tức làm mờ nó.

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

Cảm ơn, điều này đã hoạt động hoàn hảo. – tapan

0

Bạn có thể sử dụng sự kiện JavaScript để bỏ chọn "không khớp" hoặc sử dụng trình mô phỏng ống xả div nơi "không khớp" không thể được chọn.

Các vấn đề liên quan