检测文字输入中的输入

问题描述:

我试图检测用户在输入文字时还是输入Enter。事件只有在按键“释放”和键释放都发生在文本输入内时才会触发。也就是说,如果事件在身体某个其他部分按下Enter,则该事件不应触发,然后专注于输入并释放它。所以,我试过如下:检测文字输入中的输入

<!DOCTYPE html> 
<html> 
<head> 
<script src="jquery.js"> 
</script> 
<script> 
$(document).ready(function(e){ 
    $("input").keyup(function(e){ 
    if (e.which == 13 && $(this).attr("enter") == "1") { alert("Yep!"); } 
    }); 
$("input").keydown(function(e) { 
    if (e.which == 13) { $(this).attr("enter","1"); } 
}); 
$(document).on("keyup",function(e) { if (e.which == 13) { $("input").attr("enter","0"); } }); 
}); 
</script> 
</head> 
<body> 
<input type = 'text' enter = '0' /> 
</body> 
</html> 

,但我有一个奇怪的问题。当我关注输入并按Enter时,输入的属性enter仍然如预期的那样为0。但是,如果我现在关注输入,但如果我现在关注输入,Firebug将显示属性变为1.因此,在此之后,如果我释放键,事件将被触发。

谁能告诉我如何解决这个问题? keypress不工作,因此,如果您只需

$("input").keypress(function(e){ 
    if (e.which == 13) { alert("Yep!"); } 
    }); 

更换整个块然后再尝试这样做,点击了输入的取消焦点,然后按Enter并同时保持按下状态,重点投入。您现在将看到一系列连续的提醒!

+0

你尝试过我的答案???。 – 2013-03-06 10:46:05

+0

是的。不起作用.. :( – SexyBeast 2013-03-06 10:53:54

因为你有两个事件绑定到输入如下。

一个内部

$("input").keyup(function(e){ 

和其他内部

$(document).on("keyup",function(e) { 

所以首先你需要使用e.stopPropagation();

+0

一些错字这里'garion' – Jai 2013-03-06 10:42:45

+0

@Jai thanx队友... – 2013-03-06 10:46:50