将回调附加到由 JSF 生成的 html - Primefaces

Attaching a callback to html generated by JSF - Primefaces

本文关键字:html Primefaces JSF 回调      更新时间:2023-09-26

我有一个Primefaces命令按钮,我需要在document.ready上的jQuery中添加一个回调。 基本上我一直在尝试做的是获取对现有函数的引用,然后在我编写的新函数中调用它:

var existingFunction = jQuery("[id~='submit']").live("click");
jQuery("[id~='submit']").live("click", function(){
    existingFunction();
    alert('test');
    updateControlPanel(buildControlPanelUrl(getUrlVars()));
});

这对我来说似乎很简单,但由于某种原因,这行不通。 当我加载页面并单击提交按钮时,它甚至没有到达警报。

我已经检查了错误控制台,发现它抛出了以下错误:

((f.event.special[s.origType] || {}).handle || s.handler).apply is not a function

页面上有我没有编写的现有 jQuery 函数,但我想确保此错误与我处理这个错误的方式无关。

我正在使用旧版本的 JQuery(1.3 或 1.4)的 tomcat 6 。

谢谢,如果你们需要更多信息,请告诉我。

编辑

我举了一个我试图在 JS Fiddle 上做的事情的例子:http://jsfiddle.net/anSXH/2/

以下是一些进一步的澄清:我已经使用最新的Primefaces组件库在JSF 2.0(MyFaces)中将按钮构建为一个项目。然后,我拿起了这个按钮并将其嵌入到现有的网页中。 该按钮提交表单,然后调用 JavaScript 函数以在 ajax 请求完成后在页面上显示结果。 当我将按钮嵌入到页面上时,这一切都有效,但现在我需要在按钮调用函数后在客户端更新一些内容。 这就是为什么我正在考虑向现有的 onclick 函数添加回调。

作为旁注,因为我使用的是Primefaces,所以我可以附加一个JavaScript函数,以便在ajax请求完成后运行。 我的计划B是尝试访问此功能并以某种方式覆盖它。

编辑第 2 部分下面是从素数生成的控件:

<button 
 id="topsaveform:submittop"
 name="topsaveform:submittop"
 class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
 onclick="PrimeFaces.ab({source:'topsaveform:submittop',process:'topsaveform OEIMeasurementsTable',update:'errorMessages submittedPopup',onstart:function(cfg){jQuery('#loadingBar').show('fast');;},oncomplete:function(xhr,status,args){postSubmit();;}});return false;" 
 type="submit">
   <span class="ui-button-text">Save</span>
</button>

您是否尝试过使原始函数die(ref)?

jQuery("[id~='submit']").die("click");
jQuery("[id~='submit']").live("click", function(){
    alert('test');
    updateControlPanel(buildControlPanelUrl(getUrlVars()));
});

问题是我试图用一个素数按钮来做到这一点。 当我切换到标准 JSF 按钮时,我能够将该功能附加到它上面没有问题。