我试图阻止输入键从输入字段上的其他脚本触发所有操作。
以下是我正在使用的代码:
$(document).bind("keydown", function(e) {
var code = e.keyCode || e.which;
if (code == 13) {
// alert('enter pressed');
e.preventDefault();
return false;
}
});
行动中的代码示例是http://jsfiddle.net/8SJYn/, 它应该是禁用输入但不是。
评论
答案 0 :(得分:2)
你可以通过关闭keyit为单独的元素创建的输入的keydown和blur事件来实现。
试试这个:
$('#myTags + ul .ui-autocomplete-input').off('keydown').off('blur');
答案 1 :(得分:0)
进入tag-it.js,然后在第245行找到此部分并将其删除:
event.which === $.ui.keyCode.ENTER
答案 2 :(得分:0)
JavaScript事件有一个“冒泡”阶段,它们首先在最内层的DOM元素上触发,然后逐步升级到顶级文档。如果您尝试在文档级别停止事件,就像在示例代码中一样,那就太晚了。
在某些浏览器(Firefox,一个)中,有一个“捕获”阶段发生在冒泡阶段之前,它的工作方向相反:从上到下。您无法使用jQuery添加捕获阶段事件处理程序。您必须使用本机addEventListener
函数并将true
作为第三个参数传递。如果您将以下代码添加到jsfiddle中,则会阻止在某些浏览器中输入keydown事件 。
document.addEventListener('keydown', function (e) {
if (e.keyCode === 13) {
// alert('Enter keydown');
e.stopPropagation();
}
}, true);
请注意,jsfiddle中的tag-it控件还会对模糊执行文本到标记的转换,因此如果取消注释上面的alert语句,它仍会执行文本到标记的转换,因为显示警告消息时发生的模糊事件。
最后,如果您不想阻止其他脚本处理Enter keydown,还要阻止浏览器本身,请在上面添加e.preventDefault();
行。