如果我的Primefaces视图已加载,我想执行一些jQuery代码。这是jQuery函数的代码:
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('#myButton').click();
})
</script>
这是我引用的ID的隐藏按钮:
<p:commandButton id="myButton" actionListener="#{myController.myFunction()}" value="Bla bla" style="visibility: hidden;" ajax="false" />
这是Primefaces包含jQuery的方式:
<script type="text/javascript" src="/myapp/faces/javax.faces.resource/jquery/jquery.js?ln=primefaces&v=6.2"></script>
已生成jQuery代码,它位于html源代码中,我可以在浏览器中看到它,但未执行click函数,未激活NetBeans断点(位于myFunction()的第一行) 。最重要的是:我在Chrome脚本控制台中也看不到任何错误或相关跟踪...
我在这里想念什么?
编辑:
如果我输入“ jQuery('myButton')”,Chrome脚本控制台会显示以下结果:
我还编辑了jQuery(我希望这样就可以了...),因为生成了ID,所以它只包含了我引用的ID:
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("input[id*='myButton']").each(function (i, el) {
el.click();
});
})
</script>
谢谢。
EDIT2:
我按照Melloware的建议更改了代码,现在浏览器进入无限重载循环,并且在Chrome中看到以下错误:
编辑的jQuery:
<script type="text/javascript">
jQuery(document).ready(function(){
PF('myButton').jq.click();
})
</script>
已编辑按钮html:
<p:commandButton id="hiddenButton" widgetVar="myButton" actionListener="#{myController.myFunction()}" value="Bla bla" style="visibility: hidden;" ajax="false" />
答案 0 :(得分:1)
使用widgetVar以PrimeFaces方式进行操作...
<p:commandButton id="myButton"
widgetVar="widgetMyButton"
actionListener="#{myController.myFunction()}"
value="Bla bla" style="visibility: hidden;" ajax="false" />
然后在您的JavaScript中...
<script type="text/javascript">
jQuery(document).ready(function(){
PF('widgetMyButton').jq.click();
})
</script>