我对此thread有一个类似的问题,其中我有一个JavaScript函数,它将触发隐藏的commandLink的click事件。隐藏命令将在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 "";
  }
}

最佳答案

更改

onclick="triggerHiddenEvent"

进入

onclick="triggerHiddenEvent(); return false;"

您需要添加return false;代码段,以阻止该页面提交/重新加载...


  h:commadLink标记:
  
  此标记生成HTML的<a href链接标记和一些JavaScript
  使链接充当“提交”按钮的功能。
  为了防止页面提交,您必须显式地将简单的return false;添加到
  您的onclick函数


Difference Between h:commandButton , h:commandLink and h:outputLink in JSF

关于javascript - 如何在JavaScript中触发隐藏的JSF commandLink?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13219391/

10-10 03:51