JavaScript 实现上下键选择推荐词
on Front-End
$(document).on('keydown', function (event) {
    let self = this;
    if (event.keyCode === 38 || event.keyCode === 40 || event.keyCode === 13) {
        event.preventDefault();
        let $cur = self.$tmpl.find('li.hover'); // 鼠标 hover 上的当前一条
        if (event.keyCode === 13) {
            // 回车键
            $cur.length ? $cur.trigger('click') : self.destroy(); // 如果有被鼠标选中的当前一条,则点击;否则移除 suggestion 的 dom
        } else {
            let $li = self.$tmpl.find('li'),
                num = $li.length, // suggestion 总条目
                $target; // 目标条目
            if (event.keyCode === 38) {
                // 方向键上
                $cur = $cur.length ? $cur : $li.eq(0); // 如果没有任何一条被鼠标选中,默认为第一条
                $target = $cur.prev().length ? $cur.prev() : $li.eq(num - 1); // 目标条目为当前条目的上一条,如果没有上一条,则目标条目为最后一条
            } else if (event.keyCode === 40) {
                // 方向键下
                $cur = $cur.length ? $cur : $li.eq(num - 1); // 如果没有任何一条被鼠标选中,默认为最后一条
                $target = $cur.next().length ? $cur.next() : $li.eq(0); // 目标条目为当前条目的下一条,如果没有下一条,则目标条目为第一条
            }
            $cur.removeClass('hover');
            $target.addClass('hover');
        }
    }
});