我调用了一个javascript函数,它点击了一个隐藏的commandButton但是当页面加载时点击运行,而不是在我调用该函数时。 这是html代码:
<p:inputText id="aa" value="#{bonBonneManagedBean.sel}" onkeyup="fnc()" />
<h:commandButton id="hh" onclick="#{bonBonneManagedBean.kk()}" style="display:none"/>
和javaScript函数:
function fnc()
{
length = document.getElementById('form:aa').value.length;
if(length == 10)
{
$("#hh").click();
document.getElementById('form:aa').value = "";
}
}
答案 0 :(得分:6)
您应该使用action
属性而不是onclick
这样的
<h:commandButton id="hh" action="#{bonBonneManagedBean.kk()}" style="display:none"/>
请注意,您可能需要在表单中添加表单前缀,例如
$("#myFormId\\:hh").click();
同样适用于commandLink
或任何其他“可点击”组件。
答案 1 :(得分:4)
此页面上必须有一个按钮(我怀疑,看到你无论如何隐藏它)?使用<p:remoteCommand/>
此处
抛弃隐藏按钮并替换为
<p:remoteCommand name="fnc" actionListener="#{bonBonneManagedBean.kk}"/>
但,如果这是绝对要求,您可以使用您需要的功能中的click()
方法轻松模拟js中的按钮点击
将<h:commandButton/>
更改为<p:commandButton/>
,以便为按钮分配widgetVar
属性(以保证DOM中元素的名称)。可以在几乎所有主要组件上设置widgtetVar
属性,以使您的生活更轻松
使用widgetVar
,只需调用函数中的click()
方法
<p:commandButton ajax="false" widgetVar="theButton" id="hh" action="#{bonBonneManagedBean.kk()}" style="display:none"/>
<p:inputText id="aa" widgetVar="theTextBox" value="#{bonBonneManagedBean.sel}" onkeyup="fnc()" />
并在函数中:
function fnc(){
length = theTextBox.value.length;
if(length == 10){
theButton.click()
theTextBox.value = "";
}
}
答案 2 :(得分:1)
如果Daniel和Kolossus的最高答案对某些人没有帮助:我发现字符放在我设置的id的前面,因此这有助于我:
$('[id$=hh]').click();
基本上,选择器说id以“hh”结尾,但可能不是完整的id 这在SF开发中也很有用,因为comandButtons等会发生同样的事情。