select2 multiple 防止其他输入在输入时提交表单

select2 multiple prevents other input from submitting form on enter

我有一个带有简单输入和 select2 输入的表单,如下所示:http://codepen.io/anon/pen/QyBxwE

在第一个输入获得焦点时按 Enter 应该会提交表单(在这种情况下,重定向到 404 页面)。

由于某种原因,多选 2 输入阻止了表单提交。如果我删除 select2 class 或 multiple 属性,表单将正常运行。

在 Safari、Chrome 和 Firefox 上的 Mac OS X Yosemite 上进行了测试,它在所有浏览器上始终如一地发生。

(我正在使用 jQuery 2.1.3 和 select2 4.0.1)

表单的工作原理是,当您单击回车键时,它会尝试执行一些默认操作。第一步是提交表格。这仅在没有其他 JavaScript 阻止表单提交时才有效。 Select2 multiple 通过防止默认来摆脱默认操作。这样当您开始输入并单击回车时,它不会自动提交。

解决方法是使用第二种默认选项。那就是在页面上有一个提交按钮。转到最近的提交按钮并单击该表单。此操作不会被 select2 JavaScript.

覆盖

http://codepen.io/anon/pen/yeqxQJ

只需将 <input type="submit"> 添加到您的表单中,它就会按您希望的方式工作。