如何在输入字段中禁用enter键

时间:2013-06-15 04:19:19

标签: javascript jquery

我试图阻止输入键从输入字段上的其他脚本触发所有操作。

以下是我正在使用的代码:

 $(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/, 它应该是禁用输入但不是。

评论

3 个答案:

答案 0 :(得分:2)

你可以通过关闭keyit为单独的元素创建的输入的keydown和blur事件来实现。

试试这个:

$('#myTags + ul .ui-autocomplete-input').off('keydown').off('blur');

http://jsfiddle.net/JzJRY/

答案 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();行。