【问题标题】:<p:commandButton>'s action listener not firing with attribute type="button"<p:commandButton> 的动作侦听器未使用属性 type="button" 触发
【发布时间】:2013-08-30 14:30:00
【问题描述】:

是否可以触发具有type="button" 属性的&lt;p:commandButton&gt; 的action、actionListener。我有一个要求,表单中有文本框和命令按钮。如果我在任何文本框中按回车键,则会调用 commandButton。所以我将所有命令按钮类型更改为“按钮”。现在问题我面临那个命令按钮的动作,actionListener 没有触发。我想在不使用 java 脚本的情况下解决它。我也读了这个This Link。谁能告诉我应该在哪里编辑或更改以获得预期的输出。谢谢。

【问题讨论】:

  • 文本框是inputText还是inputTextArea?
  • @Damian:是的,我的意思是&lt;p:inputText&gt;

标签: jsf-2 primefaces commandbutton


【解决方案1】:

使用type="button" 是防止输入键提交表单的错误解决方案。它基本上将提交按钮更改为不提交表单的死按钮,仅对附加 JavaScript onclick 和喜欢有用。您只是面临这种错误解决方案的后果。您不应该尝试修复它,而应退后一步,以正确的方式解决最初的问题。

其中一种方法是:

<h:form onkeydown="return event.keyCode != 13">

或者,更一般地说,使用 jQuery,它会从限制中跳过文本区域:

$(document).on("keydown", ":input:not[textarea]", function(event) {
    return event.keyCode != 13;
});

注意:jQuery 已经捆绑在 PrimeFaces 中,您确实不需要需要单独安装任何脚本。另请注意,您真的不能在这里绕过 JavaScript。更重要的是,PrimeFaces/ajax 组件依赖于 JavaScript,没有 JavaScript 无论如何都无法工作。

【讨论】:

  • 感谢您的回复。我已经在上面给出的链接中阅读了您的回复。但我试图在不使用 javaScript 的情况下解决它。那么有可能吗?
  • 没有。这种限制也没有任何意义。
  • 我明白了。谢谢@BalausC。
猜你喜欢
  • 1970-01-01
  • 2022-06-10
  • 2015-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多