2009-12-27 56 views
0

我有一個通過HTML標記定義的YUI按鈕。我設法正確地加載和「剝皮」。雅虎UI自定義按鈕

的問題是一個自定義的點擊事件。我已經嘗試了很多方法,所有這些方法都將自定義函數鏈接到'click'事件,但無論採用哪種方式,它總是在頁面加載時觸發,然後點擊時不會觸發。我似乎無法讓它「等待」用戶點擊。它在第一次約會時就像處女一樣射擊。下面

代碼....

<script type="text/javascript"> 
    YAHOO.util.Event.onContentReady("submitbutton", onButtonReadySubmit); 
    YAHOO.util.Event.onContentReady("editbutton",onButtonReadyEdit); 

    var myTabs = new YAHOO.widget.TabView("demo"); 
    function editDoc(sBaseRef, sUNID) { 
     var sNewURL = sBaseRef + "/0/" + sUNID + "?EditDocument"; 
     alert("Going to : " + sNewURL); 
    window.location.href=sNewURL; 
    } 
    function onButtonReadySubmit() { 
var oSubmitButton = new YAHOO.widget.Button("submitbutton"); 
    } 
    function onButtonReadyEdit() { 
     var oEditButton = new YAHOO.widget.Button("editbutton"); 
     YAHOO.util.Event.addListener("editbutton", 'click', editDoc('a URL path goes here' , 'A PageKey goes here')); 
    } 

回答

0

你的問題是第三個參數。這應該是對功能的參考。代碼中發生的事情是,3參數是一個在創建偵聽器時調用的函數,並且不返回任何內容。

您有:

YAHOO.util.Event.addListener("editbutton", 'click', editDoc(
    'a URL path goes here', 
    'A PageKey goes here' 
)); 

只要你想要的是:

YAHOO.util.Event.addListener("editbutton", 'click', editDoc); 

但是,你也想通過'一個URL路徑放在這裏'「A PageKey放在這裏'到點擊時的功能。爲此,請使用addListener()的可選第四個參數 - 要傳遞給函數的對象。

function editDoc (ev, oArgs) { 
    var sBaseRef = oArgs.url, 
     sUNID = oArgs.key; 

    /* code here */ 

} 

YAHOO.util.Event.addListener("editbutton", 'click', editDoc, { 
    url: 'a URL path goes here', 
    key: 'A PageKey goes here' 
}); 

更多見http://developer.yahoo.com/yui/docs/YAHOO.util.Event.html#method_addListener

正如Todd提到的,您也可以將其作爲YUI Button創建的一部分來完成 - 但是函數與函數引用的問題相同。