2014-08-27 6 views
0

Я хотел бы переопределить событие фокуса по умолчанию для автозаполнения, поэтому мне не нужно переопределять его каждый раз, когда я вызываю автозаполнение. Однако я не могу понять, как переопределить события с помощью моего подхода. Опции работают нормально, события не:Глобальное переопределение события jquery ui autocomoplete widget

$.widget("custom.autocompleteExt", $.ui.autocomplete, { 
    autoFocus: true, 
    focus: function(event, ui){ 
    console.log(ui); 
    event.preventDefault(); 
    } 
}); 

ответ

0

Если вы посмотрите на widget factory page:

Каждое событие имеет соответствующую функцию обратного вызова, которая подвергается в качестве опции.

При создании экземпляра виджета обработчики событий передаются как параметры. Все, что вам нужно сделать, чтобы иметь обработчик события по умолчанию передать его в качестве опции по умолчанию:

$.widget("custom.autocompleteExt", $.ui.autocomplete, { 
    options: { 
    autoFocus: true, 
    focus: function(event, ui){ 
     console.log(ui); 
     event.preventDefault(); 
    } 
    } 
}); 
$("#my-input").autocompleteExt(); 
// can still be overridden with: 
$("#my-input").autocompleteExt({focus:null}); 

Обратите внимание, что то же самое верно для autoFocus и все другие варианты. Фрагмент, который у вас есть в этом вопросе, на самом деле ничего не сделает.

Пример: http://jsfiddle.net/ccfgt6w9/

Смежные вопросы