0

HTML マークアップで定義された YUI ボタン​​があります。私はそれをロードして適切に「スキン」することができました。

問題は、カスタム クリック イベントです。カスタム関数を「クリック」イベントにリンクする多くのアプローチを試しましたが、どの方法でも、ページの読み込み時に常にトリガーされ、クリックしても起動しません。ユーザーがクリックするのを「待つ」ことができないようです。彼の最初のデートで処女のように撃ちます。

以下のコード....

<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'));
    }

4

2 に答える 2

1

YUI ボタン​​は、YAHOO.util.Event.addListener を使用するのではなく、YUI ボタン​​ インスタンスでサブスクライブする独自のクリック イベントを発行します。これについては、YUI ボタン​​のランディング ページhttp://developer.yahoo.com/yui/button/#handlingeventsで詳しく説明されています。

于 2010-01-04T18:58:42.703 に答える
0

あなたの問題は3番目の引数です。それは関数への参照でなければなりません。コードで何が起こるかというと、引数 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 パスがここに入る」「PageKey がここに入る」も関数に渡す必要があります。これを行うには、関数に渡すオブジェクトである addListener() のオプションの 4 番目の引数を使用します。

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 ボタン​​の作成の一部としてこれを行うこともできますが、関数と関数の参照の同じ問題が適用されます。

于 2010-01-08T06:47:16.597 に答える