0

我的页面上有一些jsf ' commandLinks '。对于这些 commandLinks,有onClick事件。目前我已经将 onclick 函数直接编写为这些 commandLinks 的 onclick 属性。

由于它是一个 commandLink,它将创建 html 锚标记并附加一些 jsf JavaScript 以用于表单提交。当我直接在 onclick 属性中编写 JavaScript 时,jsf 会在插入自己的 JavaScript 时处理它。但是当我通过 jQuery 附加相同的事件处理程序时,它不会在执行事件处理程序之前识别并提交表单。

这个问题有什么合适的解决方案吗?

4

1 回答 1

3

您需要让您的 jQuery 函数像 JSF 在幕后所做的一样:将onclick属性中指定的自定义 onclick 函数包装在另一个函数中,该函数根据自定义 onclick 函数的结果执行提交表单的标准 JSF 作业。

这是一个启动示例,假设所有这些链接元素都有一个类,link并且您的自定义 onclick 函数是yourCustomFunction().

$(".link").each(function(i, element) {
    var originalJsfOnclick = element.onclick; // Grab the JSF-generated onclick function.
    element.onclick = null; // Reset it.

    $(element).click(function(event) {
        if (yourCustomFunction()) { // First call your function.
            originalJsfOnclick.call(element, event); // If it returns true, then execute the JSF-generated onclick.
        }
    });
});

function yourCustomFunction() {
    // ...
}
于 2012-04-22T17:23:24.230 回答