jquery 自动完成

发布于 2024-10-21 01:04:14 字数 165 浏览 2 评论 0原文

当我点击“enter”从 jquery-autocomplete 结果中选择一个项目时,表单就会提交。为什么会发生这种情况......

我应该在文本字段中获取数据,然后在第二次输入表单时应提交...

请建议在 autocomplete.js 中进行更改的位置

提前致谢

when I hit "enter" to choose an item from the jquery-autocomplete results, the form submits. Why this happens....

i should get the data in the text field and on second enter the form should submit...

please suggest where to change in autocomplete.js

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

作妖 2024-10-28 01:04:15

试试这个:

在 autocomplete.js 文件中找到 li 上的 keydown 事件,然后将此行放在 keydown 事件处理程序的末尾(它可能有一些 switch 语句,您对 13[ Enter key code 感兴趣) ]),:

return false;

例如:

.keydown(function(e) {
    // track last key pressed
    lastKeyPressCode = e.keyCode;
    switch(e.keyCode) {
        case 38: // up
            e.preventDefault();
            moveSelect(-1);
            break;
        case 40: // down
            e.preventDefault();
            moveSelect(1);
            break;
        case 9:  // tab
        case 13: // return
            if( selectCurrent() ){
                // make sure to blur off the current field
                $input.get(0).blur();
                e.preventDefault();
                return false;          // ADD THIS !
            }

            break;
        default:
            active = -1;
            if (timeout) clearTimeout(timeout);
            timeout = setTimeout(function(){onChange();}, options.delay);
            break;
    }
})

这将停止事件进一步传播并提交表单。

try this:

Find the keydown event on the li, in the autocomplete.js file and then place this line at the end of the keydown`s event handler (it may have some switch statement, you are interested about the 13[ enter key code]),:

return false;

ex:

.keydown(function(e) {
    // track last key pressed
    lastKeyPressCode = e.keyCode;
    switch(e.keyCode) {
        case 38: // up
            e.preventDefault();
            moveSelect(-1);
            break;
        case 40: // down
            e.preventDefault();
            moveSelect(1);
            break;
        case 9:  // tab
        case 13: // return
            if( selectCurrent() ){
                // make sure to blur off the current field
                $input.get(0).blur();
                e.preventDefault();
                return false;          // ADD THIS !
            }

            break;
        default:
            active = -1;
            if (timeout) clearTimeout(timeout);
            timeout = setTimeout(function(){onChange();}, options.delay);
            break;
    }
})

this will stop the event to further propagate and submit the form.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文