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
正在从服务器获取密钥组合。基于此,我正在分配组合键以动态运行。下面的代码适用于循环中的最后一次迭代。以下代码如何适用于所有迭代。
在我的页面中,我有两个按钮保存和取消下面的代码在 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