如何为大型应用程序启用键盘导航

时间:2010-02-10 12:29:27

标签: c# jquery asp.net asp.net-ajax keyboard-shortcuts

我有一个大的Asp.net(有些页面是Ajaxable但不是全部),我想为它激活键盘导航。

选择执行某些快捷键或调用某些方法&功能或可见和隐藏页面元素。这些快捷键超过50个键。

此外,用户必须能够更改任何快捷方式(此时没有必要但必须完成)

那么如何为我的应用程序启用键盘导航?

1 个答案:

答案 0 :(得分:2)

以下是我在jQuery中为另一个项目编写的一些帮助程序。 也许你可以使用其中一些:

App = {
    doStuff : function() {
        // a custom action
    },
    attachKeyboard : function(map) {
        jQuery(document).bind('keydown', {map: map, scope: this}, this.keyNav);
    },
    detachKeyboard : function(map) {
        jQuery(document).unbind('keydown', this.keyNav);
    },
    keyNav : function(e) {
        var key = e.keyCode || e.which;
        var map = e.data.map;
        var scope = e.data.scope;
        var keymap = {
            UP: 38,
            DOWN: 40,
            LEFT: 37,
            RIGHT: 39,
            RETURN: 13,
            ESCAPE: 27,
            BACKSPACE: 8
        };
        for( var i in map ) {
            var k = i.toUpperCase();
            if ( keymap[k] ) {
                map[keymap[k]] = map[i];
            }
        }
        if (typeof map[key] == 'function') {
            map[key].apply(scope);
        }
    }
}

像这样使用:

App.attachKeyboard({
    up: this.doStuff,
    down: function() {
        // some other action
    },
    16: function() {
        // do stuff when charcode 16 is pressed
    }
});

如果你想改变动作,你可以解开键盘并重新绑定它:

App.detachKeyboard();
App.attachKeyboard({
    up: function() {
        // do stuff
    }
});