2009-08-19 6 views
0

Ich erstelle eine Schaltfläche, wenn sie geklickt wird, aktiviert sie eine Backup-Funktion.
Mein Problem, Backup wird gestartet, bevor ich auf diese Schaltfläche geklickt habe.
Wie, behebe ich dieses Problem? Irgendeine Idee ?YUI Event Utility Problem

Hier ist mein Code (Fragment):

(Taste):

   var oSaveCuratedQuery = new YAHOO.widget.Button({ 
       type: "button", 
       label: "Save Query", 
       id: "updateCuratedQuery", 
       name: "updateCuratedQuery", 
       value: "updateCuratedQueryValue", 
       container: idReq }); 

YAHOO.util.Event.addListener("updateCuratedQuery-button", "click", saveCuratedQuery(idReq, contentCurValue)); 

(Backup-Funktion):

function saveCuratedQuery (geneId,curatedText) { 

      var handleSuccessGeneQueries = function(o){ 
       Dom.get('progress').innerHTML = "Data Saved..."; 
      } 

      var handleFailureGeneQueries = function(o){ 
       alert("Save failed...") 
      } 

      var callbackGeneQueries = 
      { 
       success:handleSuccessGeneQueries, 
       failure: handleFailureGeneQueries 
      }; 


    var sUrlUpdate = "save.html?"; 
    var postData = 'key=saveCuratedQuery&value=gene_id==' +geneId+ '--cq==' +curatedText; 

var request = YAHOO.util.Connect.asyncRequest('POST', sUrlUpdate, callbackGeneQueries, postData); 

     } 

Ich versuche auch: oSaveCuratedQuery.on ("Klick ", saveCuredQuery (idReq, contentCurValue));
Aber das gleiche Problem!
Die Sicherung erfolgt, bevor ich auf "Speichern" klicke.

Vielen Dank für die Hilfe.

Antwort

1

Das dritte Argument von addListener sollte eine Funktion sein, die beim Auftreten des Ereignisses ausgeführt wird.

Sie geben stattdessen den Rückgabewert von saveCuredQuery weiter.

var callbackSaveCuratedQuery = function (idReq, contentCurValue) { 
    return function callbackSaveCuratedQuery() { 
     saveCuratedQuery(idReq, contentCurValue); 
    }; 
}(idReq, contentCurValue); // Use an anonymous closure function 
          // to ensure that these vars 
          // do not change before the click 
          // event fires. 

YAHOO.util.Event.addListener("updateCuratedQuery-button", 
          "click", 
          callbackSaveCuratedQuery 
          ); 

Siehe https://developer.mozilla.org/en/A_re-introduction_to_JavaScript#Closures, wenn Sie über Schließungen lernen müssen.

+0

David ist auf dem Geld hier. Sie rufen die Funktion nicht darauf hin ... – BigBlondeViking

+0

Vielen Dank, ich habe eine Backup-Taste, die jetzt funktioniert! Danke auch für den Link (viele interessante Dinge auf dieser Seite). –