【问题标题】:Attaching a callback to html generated by JSF - Primefaces将回调附加到 JSF 生成的 html - Primefaces
【发布时间】:2012-06-13 19:23:52
【问题描述】:

我有一个 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 部分 这是从 primefaces 生成的控件:

<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>

【问题讨论】:

  • 请将您的示例代码放在 jsfiddle.net 或 jsbin.com 上,以便我们看到实时代码。

标签: javascript jquery jsf callback primefaces


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我尝试使用 die 但似乎没有任何区别。我没有在客户端附加 onclick 事件,所以我不确定这是否会有所帮助。我实际上已经在页面上的一些下拉菜单中这样做了,它适用于他们,所以我不确定这里的问题是什么。
    猜你喜欢
    • 2013-03-15
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多