2009-12-27 67 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创建的一部分来完成 - 但是函数与函数引用的问题相同。