Kendo MVVM和绑定或扩展自定义事件

Kendo MVVM和绑定或扩展自定义事件,mvvm,kendo-ui,custom-events,Mvvm,Kendo Ui,Custom Events,我的页面中有一个组合框,当cliend写下任何字母时,我想将keypress事件绑定到我的剑道组合框 据我所知,剑道在ComboBox上没有任何按键事件 我发现剑道有这样的功能来绑定值和函数: kendo.data.binders.slide = kendo.data.Binder.extend({ refresh: function () { var value = this.bindings["slide"].get(); i

我的页面中有一个组合框,当cliend写下任何字母时,我想将keypress事件绑定到我的剑道组合框

据我所知,剑道在ComboBox上没有任何按键事件

我发现剑道有这样的功能来绑定值和函数:

kendo.data.binders.slide = kendo.data.Binder.extend({
        refresh: function () {
            var value = this.bindings["slide"].get();

            if (value) {
                $(this.element).slideDown();
            } else {
                $(this.element).slideUp();
            }
        }
    });
资料来源: 但问题是我无法解决这个问题,并使其在KendoComboBox控件的InputBox上触发keypress事件

请记住,我使用的是MVVM,我不想使用诸如$('k-input')之类的东西;我想通过操纵kendo为我们提供的extend方法,在我的剑道框架中添加一些东西


提前谢谢。

这比我想象的要复杂得多,但您可以通过制作一个自定义MVVM活页夹,将其附加到
输入元素的
按键
事件来处理,如下所示:

kendo.data.binders.widget.keyPress = kendo.data.Binder.extend({
    init: function (element, bindings, options) {
        kendo.data.Binder.fn.init.call(this, element, bindings, options);
        var binding = this.bindings.keyPress;
        $(element.input).bind("keypress", function(){binding.get();});
    },
    refresh: function () {}
});
您可以将其绑定到视图模型上的函数

<input data-role="combobox"
    data-text-field="text"
    data-value-field="value"
    data-bind="keyPress: onKeyPress, source: data"></input>


var viewModel = kendo.observable({
    data: [
        {text: "One", value: 1},
        {text: "Two", value: 2}
    ],
    onKeyPress: function () {
        $("#output").append("<div>keyPress</div>");
    }
});

var viewModel=kendo.observable({
数据:[
{文本:“一”,值:1},
{文本:“两个”,值:2}
],
onKeyPress:函数(){
$(“#输出”)。追加(“按键”);
}
});

以下是一个。

您可以使用以下代码捕获所有组合框控件的按键事件:

kendo.ui.ComboBox.fn._keydown = function(e) {
    if (e.which == 13) {
        alert("key pressed!");
    }
};

这也适用于通常不支持按键事件的DropDownList小部件。

尊敬!谢谢你,伙计。。。虽然我试过那样的方法,但还是没能完成。但是你知道吗?他们说完成工作的人应该得到所有的荣誉。我必须说我真的很感激你在这件事上花了这么多时间。非常感谢@萨博克斯很高兴我能帮忙。这对我来说也是一次学习经历。我没有意识到,如果你正在为非小部件制作一个MVVM活页夹,你可以将它分配给
kendo.data.binders.myBindersName
,但要让它与小部件(如组合框)一起工作,你必须将活页夹分配给
kendo.data.binders.widget.myBindersName
,这一个小细节需要一段时间才能弄清楚@用Spike编码这太棒了,但我不能让它和自动完成一起工作。有什么想法吗?我把它作为一个问题贴在这里:因为我发现了另一种看起来很有希望的方法。。。一开始