如何在PrimeFaces selectOneMenu中按下Enter时提交表单?

时间:2016-02-09 17:03:12

标签: primefaces

我的表单只包含selectOneMenu输入和提交按钮。当我在selectOneMenu中按Enter键时没有任何反应。如果我在表单中输入了文本,则在按Enter键并且焦点位于文本输入中时会提交表单,但如果焦点位于selectOneMenu中,则永远不会提交。

您可以在PrimeFaces ShowCase中看到相同的行为:http://www.primefaces.org/showcase/ui/ajax/dropdown.xhtml

有没有办法在selectOneMenu输入中输入提交表单?如果菜单未显示,则Enter应仅提交表单,因为此处使用Enter来选择值。

我已经尝试使用jQuery捕获按键,但是在按Enter时它从未被调用 - 其他按键被捕获。

我使用的是PrimeFaces 5.3。

谢谢!

/布赖恩

1 个答案:

答案 0 :(得分:1)

我设法通过覆盖SelectOneMenu的handleEnterKey来进行工作,当菜单可见时我只调用event.preventDefault和event.stopPropagation。在PrimeFaces 5.3版本中,无论菜单是否可见(并阻止Enter键),都会调用event.preventDefault和event.stopPropagation。

PrimeFaces.widget.SelectOneMenu.prototype.handleEnterKey = function(event) {
    if (this.panel.is(':visible')) {
        this.selectItem(this.getActiveItem());
        event.preventDefault();
        event.stopPropagation();
    }
}

PrimeFaces问题:https://github.com/primefaces/primefaces/issues/1127#issuecomment-182269814