问题陈述:我已经实现了this Stack Overflow应答中描述的代码,以便在用户使用文本<input>
时尝试捕获答案键。该代码用于捕获输入按下,但是在按下输入后,功能体保持运行。基本上,只要按下回车键,该功能就会无限运行。 这样做的理想行为是让用户按Enter键,然后使用名为的功能。
我试图解决我的问题是什么?
以下是我原来的jQuery。
$(function(){
$("#maininput").keyup(function (e) {
if (e.keyCode == 13) {
alert("Enter was Pressed while in input ")
}
});
});
按下Enter键后无限运行。因此,我开始寻找更多Stack Overflow条目,并且我发现this之类的线程谈论使用return false
或e.preventDefault()
。我尝试实施return false
并使用以下代码:
$(function(){
$("#maininput").keyup(function (e) {
if (e.keyCode == 13) {
alert("")
}
return false;
});
});
然而,即使return false
也没有解决它。然后,我将return false
替换为e.preventDefault()
,但这不起作用。可以找到一个JSFiddle here。
我的代码出了什么问题,如何解决?
答案 0 :(得分:1)
您发布的代码中没有任何内容会导致keyup
函数重复运行,但您可能需要去除功能。
https://css-tricks.com/the-difference-between-throttling-and-debouncing/
http://benalman.com/projects/jquery-throttle-debounce-plugin/
此外,您与return false
和e.preventDefault()
走在了正确的轨道上。以下是两者之间差异的一个很好的解释: