我试图将一个jQuery函数绑定到Richfaces 3.3 a4j:commandButton组件上的'oncomplete'事件。 因为我不想将函数放在commandButton组件本身上,所以我试图在文档加载上绑定它。 我认为虽然事件没有受到文档加载限制,因为按钮尚未呈现?
下面是我如何放置绑定...
jQuery(document).ready(function(){
jQuery('#Btn1').bind('complete', function(){
jQuery('#panel1').slideUp(750);
jQuery('.selection1').slideDown(750);
jQuery('.Next1').show();
}); });
这是命令按钮,它位于另一个页面包含中,可以在多个地方重复使用。这就是为什么我不想将这个功能放在按钮本身上的原因。
<a4j:commandButton id="Btn1" value="Select"/>
那么如何将'oncomplete'函数绑定到另一个位置的Btn1组件,比如父页?
非常感谢!
答案 0 :(得分:0)
我一直在使用Richfaces 4但我认为同样的理论适用。
您没有将事件附加到命令按钮本身,而是附加到通过单击按钮创建的ajax事件(假设onclick返回true)
实际上,JSF将执行一些魔术,如果该组件触发一个动作,它将在渲染ajax时调用该JS。
在点击之前没有任何操作,它实际上是服务器端属性。
Richfaces(至少4个)扩展了常规的JSF ajax(javascript)对象,我相信你可以附加你的处理程序。但这可能对你没有任何实际帮助。我必须附加一个处理程序来修复一些viewstate问题。
您可以随时将函数附加到按钮上的oncomplete上,该函数引用不一定存在的函数。
所以<a4j:commandButton ... oncomplete="foo()"/>
然后在包含该按钮的任何页面上,您可以定义该功能。不是最好的解决方案,但可能是你最好的选择。