Javascript 如何延迟按enter键
我是否可以通过单击enter来延迟或确保用户不发送垃圾邮件,我如何在我的enter按钮上设置按键延迟?设置延迟计时器或删除EventListener的最佳方法是什么?您可以在上次按Enter键后的一段时间内阻止默认操作:Javascript 如何延迟按enter键,javascript,jquery,Javascript,Jquery,我是否可以通过单击enter来延迟或确保用户不发送垃圾邮件,我如何在我的enter按钮上设置按键延迟?设置延迟计时器或删除EventListener的最佳方法是什么?您可以在上次按Enter键后的一段时间内阻止默认操作: window.addEventListener('keydown', function(event) { onKeyDownHandler(event); }, false); function onKeyDownHandler(e) { var focu
window.addEventListener('keydown', function(event) {
onKeyDownHandler(event);
}, false);
function onKeyDownHandler(e)
{
var focus_id = e.target.id;
switch (e.keyCode) {
case 13: // enter
if(focus_id == "Text1")
{
alert("function 1");
}else if(focus_id == "Text2")
{
alert("function 2");
}else if(focus_id == "Text3")
{
alert("function 3");
}
return;
}
}
旁注:
- 由于
回调的返回值被完全忽略,并且addEventListener
只使用一个参数调用处理程序,因此如果您没有在处理程序中使用addEventListener
(看起来不是),则无需在this
周围包装函数;直接用就行了onKeyDownHandler
- 一些浏览器使用
作为键码,其他浏览器使用which
,这就是我在keycode
开关中使用
的原因。JavaScript的功能异常强大的e.which | e.keycode
操作符将使用|
如果它不是假的,则使用e.which
e.keyCode
window.addEventListener('keydown', function(event) {
onKeyDownHandler(event);
}, false);
function onKeyDownHandler(e)
{
var focus_id = e.target.id;
switch (e.keyCode) {
case 13: // enter
if(focus_id == "Text1")
{
alert("function 1");
}else if(focus_id == "Text2")
{
alert("function 2");
}else if(focus_id == "Text3")
{
alert("function 3");
}
return;
}
}
旁注:
- 由于
回调的返回值被完全忽略,并且addEventListener
只使用一个参数调用处理程序,因此如果您没有在处理程序中使用addEventListener
(看起来不是),则无需在this
周围包装函数;直接用就行了onKeyDownHandler
- 一些浏览器使用
作为键码,其他浏览器使用which
,这就是我在keycode
开关中使用
的原因。JavaScript的功能异常强大的e.which | e.keycode
操作符将使用|
如果它不是假的,则使用e.which
e.keyCode
$(window).on("keydown", function(e) {
onKeyDownHandler(e);
});
var lastEnter = null;
function onKeyDownHandler(e) {
var focus_id = e.target.id;
switch (e.which) { // jQuery normalizes this for you
case 13:
if (lastEnter && Date.now() - lastEnter < 5000) {
e.preventDefault();
return;
}
lastEnter = Date.now();
// Enter key processing...
break;
// ...other keys...
}
}
您可以在enter键上创建一个超时,在另一个enter键上,用新的超时覆盖以前的超时。这意味着,例如,如果在第一个超时结束之前再次按enter键,则第一个超时将被新超时覆盖,以便在执行实际超时之前获得新的x时间量。这会一直持续到无穷远 例如:
$(window).on("keydown", function(e) {
onKeyDownHandler(e);
});
var lastEnter = null;
function onKeyDownHandler(e) {
var focus_id = e.target.id;
switch (e.which) { // jQuery normalizes this for you
case 13:
if (lastEnter && Date.now() - lastEnter < 5000) {
e.preventDefault();
return;
}
lastEnter = Date.now();
// Enter key processing...
break;
// ...other keys...
}
}