我正在尝试扩展kendo-ui自动完成控件:当te用户点击enter时,我想要搜索开始,所以基本上我必须在keydown事件上检查用户输入。我尝试用以下代码来捕获按键事件:
(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);没有任何绑定事件被调用,只有_keydown,然后我做了错误的事情,不能调用自动完成的“正常”按键事件。我已经看到了许多扩展基本小部件然后创建复合小部件的示例,但我对此不感兴趣,我只想向现有的小部件添加一个功能。有人能告诉我我做错了什么吗?
谢谢!
发布于 2013-08-12 17:35:53
这段代码实际上有效:
(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);但我不知道这是不是正确的方法。
发布于 2013-08-12 12:53:39
如何避免扩展和利用现有控件上构建选项和方法的优势: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
}
});https://stackoverflow.com/questions/18175988
复制相似问题