2012-04-25 77 views
0
function openEditDialog(){ 
    window.showModalDialog('/atmew/pages/asset/searchInclude/assetEdit.mew'); 
    document.getElementById('reData').click(); 
    alert('after rerender'); 
} 

點擊隱藏按鈕,然後有一個按鈕:不能由JavaScript

<a4j:commandLink id="edit" action="#{searchController.openAssetEdit}" 
    oncomplete="openEditDialog()" immediate="true" ajaxSingle="true"> 
    <h:graphicImage url="/images/edit_icon.png" </h:graphicImage> 
    <f:param name="arId" id="arId" value="#{vo.assetReceiving.id}"/> 
</a4j:commandLink> 

另一個按鈕

<a4j:commandButton id="reData" reRender="data_grid" style="visibility: hidden;" onclick="javascript:alert('rerender clicked');"></a4j:commandButton> 

的reData按鈕不會獲​​得任何點擊。 IE的控制檯不顯示任何消息。這是如何造成的,我該如何解決這個問題?

+0

您的其他按鈕的答案並不需要的JavaScript:其onclick屬性,這只是在JavaScript是一種href屬性內裏的一部分。 – GillesC 2012-04-25 14:33:18

+0

你是什麼意思'可以嗎?'問題是什麼? – Jakub 2012-04-25 14:33:18

+0

你爲什麼要點擊一個隱藏的元素? o-o – Snuffleupagus 2012-04-25 14:33:55

回答

3

您需要使用JSF生成的HTML元素標識,而不是JSF組件標識。

開啓在瀏覽器中,右擊頁面和查看源並定位在HTML源的<a4j:commandButton>的JSF生成的HTML <input type="submit">元件。它會是這樣的:

<input type="submit" id="someFormId:reData" ... /> 

您需要確切在JavaScript中使用該ID,只是因爲工作的JavaScript的HTML DOM樹,而不是在JSF組件樹。

document.getElementById('someFormId:reData').click(); 

而且你最好是爲了獲得click()工作使用<a4j:commandLink>代替<a4j:commandButton>

+0

謝謝@BalusC。我必須很疲憊,並且無法使用jsp ID。對於獲得2 -ve評分的問題,不會有更多評論。 :( – Viola 2012-04-26 06:02:53

+0

我以爲我的方法是錯誤的,但它的ID修正後工作。再次感謝:) – Viola 2012-04-26 06:34:38

1

是否可以通過document.getElementById("my-id").click()調用onclick?至少在Chrome中這樣做會顯示錯誤「沒有方法」點擊「」。或者這可能使用jsf時? (編輯:對不起,可能是一個愚蠢的問題,但我從來沒有使用過JSF)

我認爲唯一可靠的方式來人爲地創造一個本地節點上的單擊事件是要做到這一點通過瀏覽器的機制:

function doEvent(element, eventType, event) { 
    // modern browsers 
    if (document.createEvent) { 
    event = document.createEvent("MouseEvents"); 
    event.initMouseEvent(eventType, true, true, element.ownerDocument.defaultView, 
       0, 0, 0, 0, 0, false, false, false, false, 0, null); 
    element.dispatchEvent(event); 

    // older browsers (IE6/7 for exmaple) 
    } else if (element.fireEvent) { 
    element.fireEvent("on"+eventType); 
    } 
} 

doEvent(document.getElementById("my-id"), "click"); 

關於ID考慮BalusC