Javascript - >热键 - >禁用输入字段

时间:2011-08-11 11:05:39

标签: javascript jquery ajax hotkeys

好吧所以我让热键工作就是不能让它停止

   $(document).keypress(function(e){

       if(e.which == 13){
      //Enter key is press do what you want
   }
   else if(e.which == 67 || e.which == 99){
      //C key is press do what you want

      window.location.href = "/html/credits.php";

   }
    else if(e.which == 32){
        alert("Space pressed");

    }

    });

     $("input.registerform").keypress(function(e){

     e.stopPropagation(); });

以下是我要停止的内容,我的输入表单的类是“registerform bgcolor2”,但它不能与“input.registerform”同时使用“input.registerform bgcolor2”我尝试添加ID到它使用registerform作为ID也不起作用:/

它是由我的AJAX引起的吗?或者我在这里遗漏了什么?

(抱歉,我转发了这个只是创建了一个新帐户,无法找回我的旧问题>。<)

2 个答案:

答案 0 :(得分:0)

据我所知,由于您将事件侦听器附加到文档对象,因此所有输入接受元素(如文本字段,选择等)都将处理热键,从而失去其正常行为。

查看line 44插件中的jquery.hotkeys。它排除了初始化时所有输入接受元素。

P.S。也许这个插件对你的任务来说很有用。

关键是检查事件是否来自文本接受输入。

# only bind event to text-accepting elements, if they have been
# explicitly selected
# if your event variable happens to be called e, please adjust accordingly
if ( this !== event.target && 
    ( /textarea|select/i.test( event.target.nodeName ) ||
      event.target.type === "text") ) {
    return;
}

正如您的代码现在所示,您需要在匿名函数的开头插入此代码段,并绑定到keypress事件。

答案 1 :(得分:0)

似乎工作正常:)

例如: 第一个例子:http://jsfiddle.net/HenryGarle/SG5Um/ 第二个例子:http://jsfiddle.net/HenryGarle/SG5Um/1/

新代码:

$(document).keypress(function(e){

   if(e.which == 13){
        alert("Enter");
   }
   else if(e.which == 67 || e.which == 99){
        alert("c");
       //window.location = 'whateveryouwant';
   }
    else if(e.which == 32){
        alert("Space pressed");
    }

});

$("input.registerform.bgcolor2").live('keypress', function(e){
    alert("Stopped");
    e.stopPropagation();
});

Stops:
<input class="registerform bgcolor2" type="text">
<br>
Does not stop:
<input class="registerform" type="text">

使用只有只有registerform的任何东西都会正常运行,但如果它也有bgcolor2,它将停止该事件。