0

我正在编写一个搜索功能,很像浏览器中的 [cmd+f] 功能。我一切正常,但我希望按下回车键在页面中循环浏览结果。我也有箭头按钮,可以调用我编写的函数并且它们可以工作。我使用以下命令阻止了 enter 的默认行为:

$('form').keydown(function (event) {
    if (event.keyCode == 13) {
        event.preventDefault();
        return false;
    }
});

我正在使用此代码在输入时调用该函数:

$('form').keyup(function (event) {
    if (event.keyCode == 13) {
        nextSearch();
    }
});

它适用于第一个结果,但我认为它重置了我用来标记该地点的全局变量。我能想到的唯一合乎逻辑的答案是现在按下回车会刷新 JavaScript。有没有办法防止这种情况?

我使用这些全局变量来跟踪:

window.luCurrentNumber = 0;
window.luLastActive = 0;
4

1 回答 1

0

如果我理解您已更正,您可以使用箭头键和输入键来制表符,而不是执行它们的默认值。这是我用来将 Enter 键视为选项卡的函数示例,我之所以编写该函数,是因为用户一直按 Enter 键并意外提交了页面。

    //Make enter key is pressed, tab instead of submitting.
    $('body').on('keydown', 'input, select', function (e) {
        var self = $(this)
              , form = self.parents('form:eq(0)')
              , focusable
              , next
              ;
        if (e.keyCode == 13) {
            focusable = form.find('input,a,select,button').filter(':visible');
            next = focusable.eq(focusable.index(this) + 1);
            if (next.length) {
                next.focus();
            } else {
                form.submit();
            }
            return false;
        }
    });

虽然这不完全是你想要做的,但我认为它应该让你走上正确的道路。

于 2013-11-08T16:43:10.360 回答