Событие автозаполнения в многоколоночном интерфейсе Jquery не вызывается
Я использую автозаполнение JQuery-UI с несколькими столбцами, используя _renderMenu и _renderItem в соответствии с jsfiddle
$.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;
}
});
Событие изменения срабатывает, если я нажимаю за пределами автозаполнения, не выбирая никакого результата.
Но событие изменения не вызывается при нажатии на заголовок (столбец), а затем при нажатии снаружи.
заранее спасибо
1 ответ
Мне удалось решить проблему, jquery изменил ключ, с помощью которого автозаполнение сохраняет данные элемента из "item.autocomplete" в "ui-autocomplete-item", поэтому исправление заключается в изменении вашей строки:
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);