gpt4 book ai didi

javascript - 键盘输出和键盘输入

转载 作者:行者123 更新时间:2023-12-03 10:28:25 25 4
gpt4 key购买 nike

我找到了一个 need JS 函数,它完全满足我的所有需求和愿望。然而,它有一个小缺点。

该函数在执行函数之前等待 x 毫秒 (iKeyDelay),所有这些都绑定(bind)到按键事件(keyup 或 keydown)。这一切都有效。

但是,当用户退出输入使输入失去焦点时,该函数会再次执行。应防止发生这种额外的执行,因为这是不必要的。

我的 JS 技能不太好,但也许你们可以帮助我?

$.fn.DelayedKey = function(fn, iKeyDelay, sKeyEvent) {
var iTimeoutId,
oEventData;

if (!$.isFunction(fn)) {
oEventData = arguments[0];
fn = arguments[1];
iKeyDelay = arguments[2];
sKeyEvent = arguments[3];
}

if (!iKeyDelay || 0 > iKeyDelay) {
iKeyDelay = 500;
}

if (!sKeyEvent || !this[sKeyEvent]) {
sKeyEvent = 'keydown';
}

function fnExecCallback() {
clearTimeout(iTimeoutId);
fn.apply(this, arguments);
}

function fnDelayCallback() {
var that = this,
args = arguments;
clearTimeout(iTimeoutId);
iTimeoutId = setTimeout(function() {
fnExecCallback.apply(that, args);
}, iKeyDelay);
}

if (oEventData) {
this.change(oEventData, fnExecCallback);
this[sKeyEvent](oEventData, fnDelayCallback);
}
else {
this.change(fnExecCallback);
this[sKeyEvent](fnDelayCallback);
}

return this;
};

最佳答案

全部修复!我更改了以下函数,它似乎解决了您的问题。

function fnExecCallback(e) {
if ( e.type != sKeyEvent )
return;
clearTimeout(iTimeoutId);
fn.apply(this, arguments);
}

Here是更新后的jsfiddle。

关于javascript - 键盘输出和键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29320465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com