javascript - jQuery 自动完成 : Hitting return submits the form

标签 javascript jquery jquery-autocomplete

我正在使用 jQuery 自动完成插件。

// I'm not sure if there's a better way to do this

var base_url = window.location.href.slice(0, window.location.href.indexOf('/bar'));
$('.foo-widget').find('input:first-child').autocomplete(base_url + "/api/baz?format=newline");

标记:

<ul class="foo-widget">
    <li>
        <input value="" autocomplete="off" class="ac_input"><input value="" autocomplete="off" class="ac_input"><button>Add</button>
   </li>
</ul>

这很好用。但是,当我点击“输入”以从自动完成结果中选择一个项目时,表单会提交。为什么会发生这种情况?

我查看了 jquery.autocomplete.js 并看到正在执行以下内容:

        case KEY.RETURN:
            if( selectCurrent() ) {
                // stop default to prevent a form submit, Opera needs special handling
                event.preventDefault();
                blockSubmit = true;
                return false;
            }
            break;

event.preventDefault()blockSubmit = true 不应该阻止表单提交吗?我在页面其他地方的 JS 代码是否有干扰?

最佳答案

我建议在自动完成元素上添加一个按键事件并从中返回 false。这不会影响您以后提交剩余表单的能力。

关于javascript - jQuery 自动完成 : Hitting return submits the form,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4881401/

相关文章:

javascript - 将 css 附加到当前菜单

javascript - 表单提交时的额外表单数据

javascript - 如何使 float 侧边栏在页脚之前停止 float 而不与其重叠

javascript - 将局部变量传递给回调函数

javascript - 从事件中获取表单数据

javascript - 如何在 jQuery 中单击按钮后禁用下拉菜单

javascript - 解析通过 Ajax 传递的 JSON 对象

php - jQuery ui 自动完成没有搜索结果

javascript - 带有特殊符号自动完成功能的自由文本输入

JQuery 无法单击 Firefox 中的自动完成下拉菜单