2012-05-29 34 views
7

Tôi cần phải làm như sau bằng cách sử dụng combobox.Làm thế nào để sử dụng hộp kết hợp tự động hoàn thành jQuery với dữ liệu JSON AJAX?

  • Select box có danh sách mặc định các thành phố mà người dùng có thể tìm kiếm.
  • Nếu người dùng nhập văn bản vào hộp input, tôi cần thực hiện cuộc gọi ajax để tìm nạp dữ liệu và hiển thị các tùy chọn cho người dùng.
  • Nếu dữ liệu là lấy cho yêu cầu của người dùng, những thành phố nên được nối thêm vào các tùy chọn của Select box

Sử dụng jQuery autocomplete Tôi có thể lấy dữ liệu json trên người dùng nhập vào một chuỗi và hiển thị kết quả. Tuy nhiên, tôi khá thất bại về cách tích hợp này bằng cách sử dụng combobox.

Combobox sử dụng mảng dữ liệu tĩnh để tìm kiếm và nếu tôi hiểu chính xác, hãy sử dụng cụm từ thông dụng để khớp với các giá trị. Tuy nhiên, làm thế nào để tôi làm gián đoạn nó và sử dụng cuộc gọi ajax để lấy dữ liệu từ máy chủ và cập nhật kết quả?

Autocomplete cho đầu vào hộp văn bản:

$("#searchDestination").autocomplete({ 
     delay: 500, 
     source: function(request, response) { 
      $.ajax({ 
       url: "/wah/destinationsJson.action", 
       dataType: "json", 
       data: { 
        term: request.term 
       }, 
       type: "POST", 
       success: function(data){ 
        if(data.cities.length == 0) 
         return response(["No matching cities found for " + request.term]); 
        response($.map(data.cities, function(item){ 
         return{ 
          label: item.name, 
          value: item.name 
         }; 
        }) 
        ); 
       } 
      }); 
     }, 
     minLength: 2 

    }); 
    }); 
+0

Dữ liệu nguồn tự động hoàn thành của bạn trông như thế nào? –

+0

@ ltiong_sh Tự động điền của tôi cho hộp văn bản nhập liệu đơn giản hoạt động tốt với JSON. (cập nhật câu trả lời của tôi mặc dù) – brainydexter

+0

khi bạn nói danh sách được lấy nên được nối vào danh sách mặc định, điều đó có nghĩa là các mục mặc định sẽ luôn hiển thị, hoặc chúng cũng sẽ được lọc ... dựa trên đầu vào của người dùng? –

Trả lời

2

này có thể giúp bạn .. another autocomplete Plugin mà tôi sử dụng.

Cũng đọc this

Nếu bạn muốn tải dữ liệu động trong lĩnh vực văn bản, đi với plugin trên. Khác nếu bạn muốn đi với combo box, sau đó chỉ cần tải dữ liệu trên ready() và sử dụng jquery auto complete plugin!

+1

Tôi đã hy vọng mở rộng/tái sử dụng combobox trên trang web jquery chính nó. Ngoài ra, không thể tải tất cả các dữ liệu trênReady vì nó khá nhiều dữ liệu. Cần thực hiện tìm kiếm tiền tố dựa trên tiền tố được chỉ định trong hộp văn bản đầu vào. – brainydexter

+0

Tại sao hộp kết hợp cần nhất thiết và tại sao không phải là trường văn bản? – Jebin

+0

Yêu cầu của tôi là như vậy mà tôi cần cả hai trường văn bản hoạt động như tự động điền dựa trên kết hợp tiền tố và hộp tổ hợp tạo ra tất cả các tùy chọn. – brainydexter

0

Tại sao bạn không sao chép các plugin và hai hộp kết hợp.

Sau đó:

 $("#combobox1").combobox1({ 
      select: function (event, ui) { 
      var value = ui.item.value;/*Whatever you have chosen of this combo box*/ 
      $.ajax({ 
       type: "POST", 
       dataType: 'json', 
       url: "script.php", 
       data: { 
       'anything':value 
       }, 
       success: function(res) 
       { 
       /*replace your next combo with new one*/ 
       $("select#combobox2").html(res); 
       } 
      }); 
     } 
    }); 
    $("#toggle").click(function() { 
    $("#combobox1").toggle(); 
    }); 

    $("#combobox2").combobox2(); 

    $("#toggle").click(function() { 
    $("#combobox2").toggle(); 
    }); 

PHP tập tin (Điều này được dựa trên CodeIgniter):

<?php 
    $data['response'] = 'false'; 
    $keyword = $_POST['anything']; 
    $query4 = $this->db->query("SELECT * FROM table WHERE field='".$keyword."'"); 
    $data.= "<option></option>"; 
    if($query4->num_rows() > 0) 
    { 
     foreach($query5->result_array() as $row) 
     { 
     $data.= "<option>".$row['something']."</option>"; 
     } 
    } 
    echo json_encode($data); 
} 
?> 

Hope this helps.

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