【问题标题】:How to submit form when Enter is pressed in PrimeFaces selectOneMenu?在 PrimeFaces selectOneMenu 中按下 Enter 时如何提交表单?
【发布时间】:2016-05-19 18:43:42
【问题描述】:

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

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

有没有办法让 selectOneMenu 输入中的 Enter 提交表单?并且 Enter 应该只提交表单,如果没有显示菜单,因为这里的 Enter 用于选择一个值。

我尝试使用 jQuery 来捕捉按键,但在按下 Enter 时它从未被调用 - 正在捕捉其他按键。

我正在使用 PrimeFaces 5.3。

谢谢!

/布莱恩

【问题讨论】:

  • 在展示中确认的行为。要解决这个问题,请查看对应的 PrimeFaces js 文件的源代码,看看里面是否有东西阻止了这个。然后,您可以覆盖 PrimeFaces javascript 并获得正确的行为。另外请检查 GitHub 中的 PF 问题列表,看看它是否在 5.3.x 和/或 6.0-SNAPSHOT 中得到修复。如果没有,请在那里提出问题
  • 谢谢 - 我设法通过覆盖 PrimeFaces javascript 使其工作。 Anf 我已经在 PF GitHub 上提交了一个问题。

标签: primefaces


【解决方案1】:

我设法通过覆盖 SelectOneMenu 的 handleEnterKey 来使 et 工作,其中我只在菜单可见时调用 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

【讨论】:

  • 谢谢,开源应该是这样工作的。希望他们将您的补丁包含在精英版本和 6.0 中。
猜你喜欢
  • 2011-05-29
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 2022-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多