Javascript 动态调用shortcutjs插件的快捷键组合功能

Javascript Dynamically invoke shortcut keys combination function to shortcutjs plugin

正在从服务器获取密钥组合。基于此,我正在分配组合键以动态运行。下面的代码适用于循环中的最后一次迭代。以下代码如何适用于所有迭代。

在我的页面中,我有两个按钮保存和取消下面的代码在 for 循环的最后一次迭代中工作,这意味着如果我按下保存键 function.Any 建议 btnCanel 按钮触发。希望理解我的问题。

$(document).ready(function fn() {
var keyCombination = new Object();
        keyCombination['btnAdd'] = "Alt+S";
        keyCombination['btnCancel'] = "Alt+C";

        for (var k in keyCombination) {
            if (keyCombination.hasOwnProperty(k)) {
                shortcut.add(String(keyCombination[k]), function () {
                    var btnAdd = document.getElementById(String(k));
                    btnAdd.focus();
                    btnAdd.click();
                });
            }
        }
});

如果我这样给就意味着它有效

shortcut.add("Alt+S", function () {
  var btnAdd = document.getElementById('btnAdd ');
  btnAdd .focus();
  btnAdd .click();
  });

shortcut.add("Alt+C", function () {
  var btnCancel = document.getElementById('btnCancel');
  btnCancel.focus();
  btnCancel.click();
  });

但是如果我尝试动态添加它的覆盖帮助我解决这个问题。

提前致谢。

我在 document.ready 函数之外创建了一个单独的函数,现在可以正常工作了。

$(document).ready(function fn() {
var keyCombination = new Object();
    keyCombination['btnAdd'] = "Alt+S";
    keyCombination['btnCancel'] = "Alt+C";
    for (var k in keyCombination) {
        if (keyCombination.hasOwnProperty(k)) {
            Set_KeyCombinations(k, keyCombination);
        }
    }
});

function Set_KeyCombinations(k, keyCombination) {
    shortcut.add(String(keyCombination[k]), function () {
        var eleId = document.getElementById(String(k));
        if (eleId) {
            if ($('#' + String(k).trim()).css('display') !== 'none' && eleId.getAttribute("disabled") !== "disabled") {
                eleId.click();
                eleId.focus();
            }
        }
    });
}

试试这个:

var keyCombinations = [ "Ctrl+Shift+X" , "Ctrl+Shift+Y" ];

for(var i=0; i<keyCombinations.length; i++){

  (function(shorcutCombination){
     shortcut.add(shorcutCombination,function() {
    alert("i am " + shorcutCombination);
     });
  })(keyCombinations[i]);

}

想法是您需要保留 keyCombinations[i] 的值 随着我在循环中增加。在这里测试过:Openjs