<p:commandbutton>的动作侦听器未使用属性type =“button”</p:commandbutton>触发

时间:2013-08-30 14:30:01

标签: jsf-2 primefaces commandbutton

是否可以使用属性<p:commandButton>触发type="button"的动作,actionListener。我有一个要求,在表单中有文本框和命令按钮。如果我在任何文本框中按Enter键,则会调用commandButton。所以我将所有命令按钮类型更改为“按钮”。现在问题我面临的是命令按钮的动作,actionListener没有触发。我想用out脚本解决它。我也读了This Link。任何人都可以告诉我应该在哪里编辑或更改以获得预期的输出。感谢。

1 个答案:

答案 0 :(得分:4)

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

其中一种方式是:

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

或者,更一般地说,使用jQuery,它从限制中跳过textareas:

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

注意:jQuery已经捆绑在PrimeFaces中,你需要单独安装任何脚本。另请注意,您真的无法在这里使用JavaScript。更重要的是,PrimeFaces / ajax组件依赖于JavaScript,如果没有JavaScript,它将无法工作。