使用 jquery 陷阱按键

Trap keypress using jquery

我已经编写了一个代码块来捕获按键Ctrl + s它可以工作,并且当事件发生时发出警报运行告诉我代码块已成功运行.稍后此代码块将被保存命令替换。

但是我遇到了一些麻烦,因为第一次按下 Ctrl + s 它起作用了,但是之后每次 s 按钮单独触发事件

这是代码块:

var isCtrl = false;
ck.on('contentDom', function (evt) {
    ck.document.on('keyup', function (event) {
        if (event.data.$.keyCode === 17) isCtrl = false;
    });

    ck.document.on('keydown', function (event) {

        if (event.data.$.keyCode === 17) isCtrl = true;
        if (event.data.$.keyCode === 83 && isCtrl === true) {
    //The preventDefault() call prevents the browser's save popup to appear.
   //The try statement fixes a weird IE error.
            try {
                event.data.$.preventDefault();
            } catch (err) { }

            alert('ctrl-s');

            return false;
        }
    });

}, ck.element.$);
}

非常感谢任何帮助。

这是在 jquery 中执行 ctrl+s 命令的方法,每次都有效:

$(window).keypress(function(event) {
    if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) return true;
    alert("Ctrl-S pressed");
    event.preventDefault();
    return false;
});

这个post是为同样被这个问题困扰的人准备的,我现在已经解决了。我的原始代码块的问题是,一旦 isCtrl 被设置为 true,它仍然是 true。这意味着当再次检查它是否被按下时,是否再次按下并不重要,因为它已经设置为 true。当条件语句具有 运行.

时,我添加了一行将其更改回 false

这是新的代码块:

    var isCtrl = false;
    ck.on('contentDom', function (evt) {
        ck.document.on('keyup', function (event) {
            if (event.data.$.keyCode === 17) isCtrl = false;
        });
        ck.document.on('keydown', function (event) {
            if (event.data.$.keyCode == 17) isCtrl = true;
            if (event.data.$.keyCode == 83 && isCtrl === true) {
                //The preventDefault() call prevents the browser's save popup to appear.
                //The try statement fixes a weird IE error.
                try {
                    event.data.$.preventDefault();
                } catch (err) { }
                alert('ctrl-s');
                isCtrl = false;
                return false;
            }

        });

    }, ck.element.$);
}