2009-08-19 3 views
0

Я создаю кнопку, при нажатии на нее активируется функция резервного копирования.
Моя проблема, резервное копирование запускается, прежде чем я нажал на эту кнопку.
Как устранить эту проблему? Есть идеи ?Утилита YUI Event Utility

Вот мой код (фрагмент):

(кнопка):

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

(резервная функция):

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

     } 

Я также попробовать: oSaveCuratedQuery.on ("нажмите ", saveCuratedQuery (idReq, contentCurValue));
Но такая же проблема!
Резервное копирование выполняется до нажатия кнопки «Сохранить».

Благодарим за помощь.

ответ

1

Третий аргумент addListener должен быть функцией, выполняемой при возникновении события.

Вы передаете его возвращаемое значение saveCuratedQuery.

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

См. https://developer.mozilla.org/en/A_re-introduction_to_JavaScript#Closures, если вам нужно узнать о закрытии.

+0

Дэвид на деньги здесь. вы вызываете функцию, не указывающую на нее ... – BigBlondeViking

+0

Большое спасибо, у меня есть кнопка резервного копирования, которая работает сейчас! Также, спасибо за ссылку (много интересного на этой странице). –

Смежные вопросы