如何在输入keypress时通过JavaScript调用p:commandButton?

时间:2011-12-15 09:33:22

标签: javascript jsf jsf-2 primefaces

我在我的页面中写了一个和一个。 当按下回车键时,如果成功发布动作,我想做任何js检查。

使用Javascript:

function text_onkeypress() {
    if(event.keyCode==13){
        formSubmit();
    }
}

HTML:

<p:inputText id="context" value="#{bean.fileName}"
 onkeydown="text_onkeypress();"></p:inputText>
<p:commandButton id="search" value="submit" onclick="return formSubmit();" 
 action="#{action.getResult}" ></p:commandButton>

当我在javascript中编写查询(“#search”)[0] .click()时,它可以进行检查,但不能执行action =“#{action.getResult}”。

我不知道怎么做失败的行动。

2 个答案:

答案 0 :(得分:4)

从Javascript提交表单的最简单方法是调用click()的jQuery对象的<p:commandButton>事件。

通过声明widgetVar属性,可以从Javascript访问大多数Primefaces组件。该属性创建一个Javascript变量。例如

<p:commandButton id="search" value="submit" onclick="return formSubmit();" action="#{action.getResult}" widgetVar="searchClientVar" />

我现在可以访问formSubmit函数中的变量了。这个Javascript变量有一个名为jq的属性,它引用了底层的jQuery对象以及你可以用来调用click事件的内容。

function text_onkeypress() {
  if(event.keyCode==13) {
    searchClientVar.jq.click();
  }
}

这将调用commandButton的服务器端action,并在它们通过验证时提交表单值。

答案 1 :(得分:1)

您需要什么样的检查?

您无需在输入时手动提交(特别是当您只有一个表单时)。 如果您只想在用户输入内容时提交表单,则可以使用validateLength代码。

<h:outputLabel for="firstname" value="Firstname: *" />  
        <p:inputText id="firstname"   
                value="#{personBean.firstname}"   
                required="true" requiredMessage="You have to enter your name" label="Firstname">  
            <f:validateLength minimum="2" />  
        </p:inputText>  
        <p:message for="firstname" />

点击此处演示:http://www.primefaces.org/showcase-labs/ui/pprAjaxStatusScript.jsf

PS:你使用什么PF版本?