2012-11-29 22 views
5

Tôi có trình tự động điền trên trang tìm nạp và hiển thị dữ liệu chính xác .... khi nó ngừng hoạt động đúng cách là trên sự kiện được chọn ....Giao diện người dùng jQuery -> tự động hoàn tất -> BẬT chọn -> mục ui không được xác định

$("#fld_search1").catcomplete({ 
     delay: 50, 
     minLength: 2, 
     open: function(e, ui){ 
      if(searching) return; 
      //console.log($(this).data('catcomplete')); 
      var acData = $(this).data('catcomplete'); 
      var styledTerm = '<strong>%s</strong>'.replace('%s', acData.term); 


      acData.menu 
       .element 
       .find('li a') 
       .each(function() { 
        var me = $(this); 
        me.html(me.text().replace(acData.term, styledTerm)); 
       }); 
      //return match.replace(new RegExp("("+keywords+")", "gi"),'<i>$1</i>'); 
     }, 
     select: function(event, ui) { 
      var I = ui.item; 
      top.console.log(ui); 
      $("#fld_search1").catcomplete("close"); 

      $('#fld_search1').val(I.name); 
      window.location = '/podjetje/'+I.value+'.html'; 
      //$('#frm_company_id').val(I.value); 
      return false; 
     }, 
     source: function(request, response) { 


      search_term = request.term; 

      if (search_term in cache) { 
       response(cache[ tesearch_termrm ]); 
       return; 
      } 


      var suggest_url = "/companies/find_company.json"; 


      $.ajax({ 
       url: suggest_url, 
       dataType: "json", 
       type : "POST", 
       data: { 
        owner: request.term 
       }, 
       success: function(data) { 
        response($.map(data, function(item) { 
         var alabel = item.label.replace(
           new RegExp('(' + 
            $.ui.autocomplete.escapeRegex(request.term) + 
            ')'), 
          "<b>$1</b>"); 
         return { 
          value: item.value, 
          label: item.label, 
          name: item.name, 
          category: item.category 
         } 
        })); 
       } 
      }); 


     } 
    }); 

vì vậy nó không có được đối tượng ui ...

nếu tôi làm top.console.log (ui) tôi nhận được một đối tượng với một bất động sản trong> mục ... đó là không xác định. .. vì vậy nếu tôi đăng nhập giá trị tôi, tôi nhận được không xác định ... làm thế nào là điều này có thể?

này là trong 1.9.1

nếu tôi thay đổi nó và sử dụng 1.9.2 menu LUÔN đóng trên mouseover ... nếu tôi sử dụng tự động lấy nét, nó thậm chí không mở!

Trả lời

27

Hôm nay tôi có cùng sự cố với thuộc tính chưa xác định ui.item. Sau khi gỡ lỗi, tôi đã tìm ra giải pháp. Nhóm giao diện người dùng jQuery đã thay đổi mã ví dụ Autocomplete with categories một chút. Khi bạn xem mã ví dụ nguồn bạn sẽ thấy:

<script> 
    $.widget("custom.catcomplete", $.ui.autocomplete, { 
     _renderMenu: function(ul, items) { 
      var that = this, 
       currentCategory = ""; 
      $.each(items, function(index, item) { 
       if (item.category != currentCategory) { 
        ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>"); 
        currentCategory = item.category; 
       } 
       that._renderItemData(ul, item); 
      }); 
     } 
    }); 
    </script> 

Dòng với that._renderItemData(ul, item); từng là (ở trước 1.9 phiên bản) that._renderItem(ul, item);. Xem thêm: bug #8560. Nhưng điều này không được đề cập trong số 1.9 Upgrade Guide.

Vì vậy, tôi đã thay đổi plugin của mình để sử dụng chức năng _renderItemData(...,...) và giải quyết được sự cố.

Hy vọng điều này sẽ hữu ích!

+1

+1 cho bạn, câu trả lời của bạn sẽ tiết kiệm thời gian của tôi. Tôi vừa nâng cấp JQuery UI lên 1.10.3 từ 1.8.12 và chức năng chọn đã nhận được 'undefined' trong' ui.item'. Sau khi thay đổi 'that._renderItem (ul, item)' thành 'that._renderItemData (ul, item)' nó hoạt động trở lại. –

+0

wow cảm ơn người đàn ông, bạn đã cứu tôi hôm nay :) – 360Airwalk