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.