首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kendo-ui自动完成扩展

kendo-ui自动完成扩展
EN

Stack Overflow用户
提问于 2013-08-11 19:45:03
回答 2查看 3.2K关注 0票数 1

我正在尝试扩展kendo-ui自动完成控件:当te用户点击enter时,我想要搜索开始,所以基本上我必须在keydown事件上检查用户输入。我尝试用以下代码来捕获按键事件:

代码语言:javascript
复制
(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,然后我做了错误的事情,不能调用自动完成的“正常”按键事件。我已经看到了许多扩展基本小部件然后创建复合小部件的示例,但我对此不感兴趣,我只想向现有的小部件添加一个功能。有人能告诉我我做错了什么吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-12 17:35:53

这段代码实际上有效:

代码语言:javascript
复制
  (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);

但我不知道这是不是正确的方法。

票数 1
EN

Stack Overflow用户

发布于 2013-08-12 12:53:39

如何避免扩展和利用现有控件上构建选项和方法的优势:http://jsfiddle.net/vojtiik/Vttyq/1/

代码语言:javascript
复制
//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
     }
 });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18175988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档