У меня есть редактор с текстовым полем автозаполнения в slickGrid. Это выглядит (упрощенный), как это:jQuery autocomplete in slickGrid setWidth предложений
function AutoCompleteEditor(args) {
var $input;
this.init = function() {
$input = $("<INPUT id='tags' class='editor-text' />");
$input.appendTo(args.container);
$input.bind("keydown.nav", function (e) {
if (e.which === $.ui.keyCode.LEFT || e.which === $.ui.keyCode.RIGHT) {
e.stopImmediatePropagation();
}
if((e.which === $.ui.keyCode.DOWN) || (e.which === $.ui.keyCode.UP)){
e.stopImmediatePropagation();
}
if(e.which === $.ui.keyCode.RETURN){
e.stopImmediatePropagation();
}
})
$input.focus().select();
$input.autocomplete({
minLength: 2,
autoFocus: true,
source: function(request, response) {
.....
},
focus: function(event, ui) {
return false;
},
select: function(event, ui) {
event.target.value = ui.item.label;
return false;
},
open: function(event, ui) {
$(this).autocomplete("widget")
.find("ui-menu-item-alternate")
.removeClass("ui-menu-item-alternate")
.end()
.find("li.ui-menu-item:odd a")
.addClass("ui-menu-item-alternate");
},
appendTo: args.container,
width: 500,
});
};
Теперь у меня есть 2 проблемы:
1) Список предложение является лишь немного уже, чем поле редактора. Но я бы хотел, чтобы он был еще шире - возможно, такой широкий, как самый широкий элемент в нем
2) Я отключил клавиши со стрелками вверх и вниз для поля ввода, но он не сфокусирует список так, чтобы стрелки выбирали пункт предложения.
Любые мысли, что не так в моем коде?
Спасибо за любую помощь.
К сожалению, я не мог воспроизвести то, что вы здесь делаете. Очевидно, что вы ловите ключ из меню. Но я думаю, что мой фокус остается в поле редактирования (это было бы правильно, потому что я мог бы снова набирать текст). Мне нужно было бы перехватить стрелку вверх и вниз в окне редактирования (что я делаю) и выбрать следующее или предыдущее предложение. Для этого действия я не могу найти функцию – user1596343