关于jsf:如何使用javascript单击p:commandButton

How to click on a p:commandButton using javascript

本问题已经有最佳答案,请猛点这里访问。

我的JSF页面中有很多标记。我想用一种形式的javascript单击p:commandButton。但这是行不通的。当我使用chrome调试它时,提示p:commandButton找不到,即$("#templetFile \\\\\\\\ :: editButton ")为空,为什么?

有我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<h:form id="templetFile" style="height:100%">
<input type="button" value ="click me" onclick="testOnclick();"/>
<p:commandButton id="editButton" value="ceshi" styleClass="button"
\taction="#{advancedQueryManager.editModAndClass()}" onclick="getValddd()"
\tstyle="display:none">
\t<p:ajax event="dialogReturn" update="templFile"
\tlistener="#{advancedQueryManager.onreturn()}" />
</p:commandButton>
\t\t<script type="text/javascript">
\t\t\tfunction testOnclick() {
\t\t\t\tvar a =$("#templetFile\\\\:editButton");
\t\t\t\ta.click();
\t\t\t}
\t\t\tfunction getValddd(){
\t\t\t\talert("Allready onclick!");
\t\t\t}
\t\t
  </h:form>

如果我使用此js代码
var b = document.getElementById(\\'editButton \\');
我仍然无法获取p:commandButton元素,为什么?以及如何使用javascript获取p:commandButton?


可能是jsf为按钮创建了一个新的id,因此document.getElementById('editButton')不起作用。为了解决这个问题,您可以在按钮上添加一个任意样式类,例如;

styleClass="button myButtonToClick"和javascript应该是这样;

1
2
var x =document.getElementsByClassName("myButtonToClick");
x[0].click();