我设置了kendoComboBox,我试图阻止箭头键发送输入。
在下面的示例中,如果我删除了对keyCode 38和40的检查,它们是向上和向下箭头,它将阻止所有字母数字输入但是我但是箭头键仍然会改变kendoComboBox的选择。
有任何建议或想法吗?
$(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();
});
});
答案 0 :(得分:2)
您尝试的内容无效,因为它不会影响组合框注册的事件处理程序。您可以简单地用不使用箭头键导航的处理程序替换该处理程序(尽管作为用户,我不得不问为什么要这样做):
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();
}
};
(在第一次创建组合框之前在某处添加此代码)
答案 1 :(得分:0)
You can capture the keydown event of all ComboBox controls using the following code:
kendo.ui.ComboBox.fn._keydown = function(e) {
if (e.which == 13) {
alert("key pressed!");
}
};
This also works with the Kendo DropDownList - a widget that generally doesn't support the keypress events.
答案 2 :(得分:0)
您可能已经解决了问题,但是,我遇到了阻止Kendo NumericTextBox上的值更改的问题。我发现了一篇可能对您有帮助的文章:http://www.telerik.com/forums/is-there-an-easy-way-to-disable-the-spinners
最终为我工作的是取消绑定该输入的keydown事件。
请务必注意,在窗口小部件初始化之后,您需要取消绑定箭头的keydown事件...
我的代码很简单:
...InitializeWidgets();
InitlializeEvents();
$(numberQuestions).unbind("keydown");
您需要做的就是选择选择器,取消绑定keydown事件,它应该适合您!