javascript - 试图阻止 kendoComboBox 的箭头键输入

标签 javascript jquery kendo-ui keydown

我设置了一个 kendoComboBox,我试图阻止箭头键发送输入。

在我下面的示例中,如果我删除对 keyCode 38 和 40(上下箭头)的检查,它将阻止所有字母数字输入,但箭头键仍会更改 kendoComboBox 的选择。

有什么建议或想法吗?

JS Bin

$(document).ready(function() {

$("#products").kendoComboBox({
    placeholder: "Select product",
    dataTextField: "ProductName",
    dataValueField: "ProductID",
    filter: "contains",
    autoBind: false,
    minLength: 1,
    dataSource: {
        type: "odata",
        serverFiltering: true,
        transport: {
            read: {
                url: "http://demos.kendoui.com/service/Northwind.svc/Products"
            }
        }
    }
});

// Stop up/down arrow input
$('#products').closest('.k-widget').keydown(function(e){

    console.log(e.keyCode);

    // Up/down arrow
    if(e.keyCode == 38 || e.keyCode == 40)
        e.preventDefault();
});

});

最佳答案

您尝试的方法不会起作用,因为它不会影响组合框注册的事件处理程序。您可以简单地用一个不使用箭头键导航的处理程序替换该处理程序(尽管作为用户,我不得不问您为什么要这样做):

kendo.ui.ComboBox.fn._keydown = function(e) {
    var that = this,
        key = e.keyCode;

    that._last = key;

    clearTimeout(that._typing);

    if (key !== kendo.keys.TAB &&
        key !== kendo.keys.DOWN &&
        key !== kendo.keys.UP) {
        that._search();
    }
};

(在您第一次创建组合框之前在某处添加此代码)

Demo here

关于javascript - 试图阻止 kendoComboBox 的箭头键输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20912986/

相关文章:

javascript - 从 Angular 'ng-model' 选择元素中选择第一个选项,并带有按钮

javascript - Kendo Grid - 不允许编辑某些记录

javascript - 函数包装器在 JavaScript 中的重要性

javascript - 在项目中使用 Google Apps 脚本函数

javascript - 正则表达式 : 0. 50 到 100.00

javascript - 更改服务器在 kendo ui 网格中以编程方式排序

javascript - Kendo UI 下拉列表采用最大选项的大小

javascript - 如何使用 javascript 在 sortable 中查找值的项目

javascript - 搜索我的 HTMLCollection 是否包含特定文本

javascript - 从 jQuery Datatable 隐藏列中获取值