如何在 JavaScript 中触发隐藏的 JSF commandLink?

问题描述 投票:0回答:2

我对此线程有一个类似的问题,其中我有一个JavaScript函数,它将触发隐藏的

commandLink
的点击事件。隐藏命令将触发 Java Bean 中的操作。这段代码在 IE 中运行良好,但在 Firefox 中则不行。这个问题有线索吗?

JavaScript

<h:outputScript target="head">
    HTMLElement.prototype.click = function() {
    var evt = this.ownerDocument.createEvent('MouseEvents');
    evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
    this.dispatchEvent(evt);
  }

  function triggerHiddenEvent() {
    alert("triggerHiddenEvent is trigger");
    document.getElementById("theForm:hiddenCommand").click();
  }
</h:outputScript>

XHTML

<h:form id="theForm">
  <h:commandLink id="tri_HiddenEvent" value="Trigger Hidden Event" onclick="triggerHiddenEvent"/>

  <p style="display:none">
    <h:commandLink id="hiddenCommand" styleClass="button" action="#{helloBean.doHiddenCommand}"/>
  </p>
  ...

豆子

@ManagedBean
@SessionScoped
public class HelloBean implements Serializable {
  public String doHiddenCommand() {
    System.out.println("doHiddenCommand is called");
    return "";
  }
}
javascript jsf-2 facelets managed-bean
2个回答
0
投票

改变

onclick="triggerHiddenEvent"

进入

onclick="triggerHiddenEvent(); return false;"

您需要添加

return false;
代码片段才能阻止页面提交/重新加载...

h:commad链接标签:

此标签生成 HTML 的

<a href
链接标签和一些 JavaScript 使链接充当提交按钮的功能。 为了防止页面提交,您必须显式添加简单的
return false;
到 你的 onclick 函数

JSF 中 h:commandButton 、 h:commandLink 和 h:outputLink 之间的区别


0
投票

您关于网上赚钱的建议是实用且可行的。单击此处了解有关有效在线赚钱策略的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.