2010-08-11 80 views
39

试图让jQuery检测输入输入,但空间和其他键被检测到,输入不被检测到。什么是错的下面:jQuery - keydown/keypress/keyup ENTERKEY检测?

$("#entersomething").keyup(function(e) { 
    alert("up"); 
    var code = (e.keyCode ? e.keyCode : e.which); 
    if (code==13) { 
     e.preventDefault(); 
    } 

    if (code == 32 || code == 13 || code == 188 || code == 186) { 
     $("#displaysomething").html($(this).val()); 
}); 

<input id="entersomething" /> 
<div id="displaysomething"&gt;&lt;/div&gt; 

http://jsfiddle.net/zeRrv/

回答

70

的JavaScript/jQuery的

$("#entersomething").keyup(function(e){ 
    var code = e.which; // recommended to use e.which, it's normalized across browsers 
    if(code==13)e.preventDefault(); 
    if(code==32||code==13||code==188||code==186){ 
     $("#displaysomething").html($(this).val()); 
    } // missing closing if brace 
}); 

HTML

<input id="entersomething" type="text" /> <!-- put a type attribute in --> 
<div id="displaysomething"></div> 
+0

doh !!顺便说一句,有一个IDE,你会推荐可以检查大括号?尝试使用aptana,但难以适应它,它没有一个快速预览! – ina 2010-08-11 21:41:04

+4

Notepad ++ FTW :) -http://notepad-plus-plus.org/ – 2010-08-11 21:43:10

+0

如果你在OSX上,那么Textmate会为我赢得双手胜利。 Zend Studio和Aptana很好,我相信你可以手动添加快捷键/热键来做你想做的事情? 对'event.which'感兴趣,以前从未知道: https://developer.mozilla.org/en/DOM/event.charCode#Notes – balupton 2010-08-12 05:59:20

3

我想你会与keyup事件斗争 - 因为它首先触发按键 - 你将无法停止的传播第二个如果你想排除输入密钥。