2015-06-14 2 views
1

Я пишу повторно используемую оболочку вокруг автозаполнения jQuery, и по какой-то причине я не могу получить обратный вызов select для работы.jQuery autocomplete select function not firing

С учетом приведенного ниже кода функция select() никогда не вызывается. Что я испортил? Есть ли скрытое ограничение на то, как вы указываете обратные вызовы select с помощью виджета автозаполнения jQuery?

ПРИМЕЧАНИЕ: это только наполовину написанное. Просто пытаюсь получить select работающих.

// Note: 'input' is a jQuery object. 
name.space.ThingSuggest = function(input) { 
    this.input = input; 

    // Set up an autocomplete widget on the given input form. 
    this.input.autocomplete({ 
    source: name.space.ThingSuggest.SOURCE_URL, 
    delay: 500, 
    select: this.select.bind(this) 
    }); 

    this.input.autocomplete('instance')._renderItem = name.space.ThingSuggest.renderItem; 
}; 

name.space.ThingSuggest.SOURCE_URL = // some URL 

name.space.ThingSuggest.prototype.select = function(event, ui) { 
    this.input.val(ui.item.label); 

    return false; 
}; 

name.space.ThingSuggest.renderItem = function(ul, item) { 
    return $('<li>', { value: item.value }) 
     .append(item.label + ' <span>@' + item.username + '</span>') 
     .appendTo(ul); 
}; 

быть ясно,, автодополнение и _renderItem работают так, как ожидалось. Это только обратный вызов suggest, который не срабатывает.

Я слишком долго смотрел на это слишком долго ... так что все, что я знаю, это глупая несогласованная скобка или что-то в этом роде.

Заранее благодарен!

+0

Как вы думаете, что «это» находится в текущем объеме? – wahwahwah

+0

В какой из областей выше? – honktronic

+0

В чем ваш вопрос? 'this.select.bind (this)' Это вопрос привязки модели или вопрос 'ThingsSuggest'? – wahwahwah

ответ

0

Я перепутал select и события focus. Потому что я действительно очень тупой.

select действительно работает в примере кода выше, но я не запускал его, потому что я просто перемещал фокус внутри списка, а не нажимал/не выбирал запись.

Что я на самом деле хотел сделать - использовать обратный вызов при изменении фокуса элемента списка - вместо этого нужно использовать обратный вызов focus.