template kendo dropdownlist autocomplete widget kendo-ui extend

autocomplete - template - kendo dropdownlist



kendo-ui autocompletar extender (2)

¿Qué hay de evitar la ampliación y aprovechar las opciones y los métodos de compilación en el control existente ?: http://jsfiddle.net/vojtiik/Vttyq/1/

//create AutoComplete UI component var complete = $("#countries").kendoAutoComplete({ dataSource: data, filter: "startswith", placeholder: "Select country...", separator: ", ", minLength: 50 // this is to be longer than your longest char }).data("kendoAutoComplete"); $("#countries").keypress(function (e) { if (e.which == 13) { complete.options.minLength = 1; // allow search complete.search($("#countries").val()); complete.options.minLength = 50; // stop the search again } });

Estoy tratando de extender el control de autocompletado de kendo-ui: quiero que la búsqueda comience cuando el usuario acceda a ingresar, así que básicamente tengo que verificar la entrada del usuario en el evento de keydown. Intenté capturar el evento keydown con este código:

(function($) { ui = kendo.ui, Widget = ui.Widget var ClienteText = ui.AutoComplete.extend({ init: function(element,options) { var that=this; ui.AutoComplete.fn.init.call(this, element, options); $(this).bind(''keydown'',function(e){ console.log(1,e); }); $(element).bind(''keydown'',function(e){ console.log(2,e); }); }, options: { [...list of my options...] }, _keydown: function(e) { console.log(3,e); kendo.ui.AutoComplete.fn._keydown(e); } }); ui.plugin(ClienteText); })(jQuery);

Ninguno de los eventos combinados se llama, solo el _keydown, y luego estoy haciendo algo mal y no puedo invocar el evento de autocompletar "normal". He visto muchos ejemplos que amplían el widget base y luego crean un widget compuesto, pero no estoy interesado en hacerlo, solo quiero agregar una funcionalidad a un widget existente. ¿Puede alguien mostrarme lo que estoy haciendo mal?

¡Gracias!


Este código realmente funciona:

(function($) { ui = kendo.ui, ClienteText = ui.AutoComplete.extend({ init: function(element,options) { ui.AutoComplete.fn.init.call(this, element, options); $(element).bind(''keydown'',function(e){ var kcontrol=$(this).data(''kendoClienteText''); if (e.which === 13) { kcontrol.setDataSource(datasource_clientes); kcontrol.search($(this).val()); } else { kcontrol.setDataSource(null); } }); }, options: { name: ''ClienteText'', } }); ui.plugin(ClienteText); })(jQuery);

pero no sé si es la forma correcta de hacerlo.