Javascript 构建一个Google建议框,在不使用jQuery的情况下响应键盘事件

Javascript 构建一个Google建议框,在不使用jQuery的情况下响应键盘事件,javascript,events,keyboard,Javascript,Events,Keyboard,我需要建立一个谷歌建议风格下拉框,但不幸的是,由于各种许可限制,我无法使用jQuery或Prototype。几乎我唯一可以使用的是公共领域的东西,我可以修改它,并且不需要将其他人的所有权归于它 在任何情况下,我都可以很好地处理AJAX和服务器端脚本。我遇到的难题是如何让Javascript响应键盘事件: 当用户按下箭头键时,选择列表中的下一项 点击[Enter]时,选择并用所选项目填充文本框 点击[Esc]时关闭建议框 等等等等等等 想法?示例?不完全是您想要的,但可能会引起您的兴趣 您可以

我需要建立一个谷歌建议风格下拉框,但不幸的是,由于各种许可限制,我无法使用jQuery或Prototype。几乎我唯一可以使用的是公共领域的东西,我可以修改它,并且不需要将其他人的所有权归于它

在任何情况下,我都可以很好地处理AJAX和服务器端脚本。我遇到的难题是如何让Javascript响应键盘事件:

  • 当用户按下箭头键时,选择列表中的下一项
  • 点击[Enter]时,选择并用所选项目填充文本框
  • 点击[Esc]时关闭建议框
  • 等等等等等等

想法?示例?

不完全是您想要的,但可能会引起您的兴趣

您可以使用此代码附加/分离事件(与IE和W3C事件模型兼容,因此应适用于所有浏览器):

然后在处理程序中,您可以看到按下了什么键,并根据需要执行任何操作

希望有帮助,
安德烈看一看。我在许多项目中使用过这个库。它适用于所有A级浏览器,允许您捕获关键事件,并且许可证非常宽松。

为什么您不能使用jQuery?
events = {

    addEvent: function(obj, e, handler) {
        if (!obj._attachedEvents)
            obj._attachedEvents = new Array();
        if (obj._attachedEvents[e])
            this.removeEvent(obj, e);
        obj._attachedEvents[e] = handler;

        if (obj.addEventListener) 
            obj.addEventListener(e, handler, false);
        else if (obj.attachEvent) 
            obj.attachEvent('on' + e, handler);
    },

    removeEvent: function(obj, e) {
        if (!obj._attachedEvents || !obj._attachedEvents[e])
            return;

        if (obj.removeEventListener) 
            obj.removeEventListener(e, obj._attachedEvents[e], false);
        else if (obj.detachEvent) 
            obj.detachEvent('on' + e, obj._attachedEvents[e]);
        obj._attachedEvents[e] = null;
    },

    cancelEvent: function(e) {
        e = e || window.event;

        if(e.preventDefault)
            e.preventDefault();
        if(e.stopPropagation) 
            e.stopPropagation(); 
        e.cancelBubble = true;
        e.returnValue = false;
        return false;
    },

    getTarget: function(e) {
        return e.srcElement || e.target;
    }
};