我试图检测用户何时在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
并在按住它的同时将焦点放在输入上。您现在将看到一系列连续的警报!