2013-12-13 70 views
0

我使用jQuery UI的使用_renderMenu_renderItem與列自動完成按jsfiddlejQuery UI的多欄自動完成更改事件不會被觸發

$.widget('custom.mcautocomplete', $.ui.autocomplete, { 
_renderMenu: function(ul, items) { 
    var self = this, 
     thead; 

    if (this.options.showHeader) { 
     table = $('<div class="ui-widget-header" style="width:100%"></div>'); 
     $.each(this.options.columns, function(index, item) { 
      table.append('<span style="padding:0 4px;float:left;width:' + item.width + ';">' + item.name + '</span>'); 
     }); 
     table.append('<div style="clear: both;"></div>'); 
     ul.append(table); 
    } 
    $.each(items, function(index, item) { 
     self._renderItem(ul, item); 
    }); 
}, 
_renderItem: function(ul, item) { 
    var t = '', 
     result = ''; 

    $.each(this.options.columns, function(index, column) { 
     t += '<span style="padding:0 4px;float:left;width:' + column.width + ';">' + item[column.valueField ? column.valueField : index] + '</span>' 
    }); 

    result = $('<li></li>').data('item.autocomplete', item).append('<a class="mcacAnchor">' + t + '<div style="clear: both;"></div></a>').appendTo(ul); 
    return result; 
} 
}); 

改變,如果我點擊自動完成之外沒有被觸發事件選擇任何結果。

但點擊標題(列)然後點擊外部時,不會觸發更改事件。

在此先感謝

+0

難道ÿ你曾經解決過這個問題嗎?我有完全一樣的。它似乎ui.item:未定義。另外,正如你可以從這個[jsfiddle](http://jsfiddle.net/8CFL4/)看到的,它不能在jQuery UI 1.10中工作,但[工作](http://jsfiddle.net/g4stL/212/ )在jquery 1.8.18中 –

回答

0

我設法解決這個問題,jQuery的改變由自動完成從「item.autocomplete」的項目數據保存到「用戶界面,自動完成項目」,因此解決方法是改變你的關鍵行:

result = $('<li></li>').data('item.autocomplete', item).append('<a class="mcacAnchor">' + t + '<div style="clear: both;"></div></a>').appendTo(ul); 

result = $('<li></li>').data('ui-autocomplete-item', item).append('<a class="mcacAnchor">' + t + '<div style="clear: both;"></div></a>').appendTo(ul); 

Here is a working jsfiddle using jquery 1.10

相關問題