YUI 事件实用程序问题

发布于 2024-08-02 11:43:33 字数 1433 浏览 2 评论 0原文

我创建了一个按钮,单击时会激活备份功能。
我的问题是,在我单击此按钮之前就启动了备份。
我该如何解决这个问题?有什么想法吗?

这是我的代码(片段):(

按钮):(

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

        }

我也尝试: oSaveCueratedQuery.on("点击",saveCueratedQuery(idReq, contentCurValue));
但同样的问题!
在单击“保存”按钮之前备份已完成。

谢谢你的帮助。

I create a button, when clicked, it activates a backup feature.
My problem, backup is launched before I have clicked to this button.
How, do I fix this problem ? Any Idea ?

Here is my code (fragment) :

(button) :

                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 function) :

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

        }

I also try :
oSaveCuratedQuery.on("click",saveCuratedQuery(idReq, contentCurValue));
But same problem !
The backup is done before I click "save" button.

Thank you for help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

指尖微凉心微凉 2024-08-09 11:43:33

addListener 的第三个参数应该是事件发生时运行的函数。

您将向其传递 saveCulatedQuery 的返回值

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 如果你需要了解闭包。

The third argument of addListener should be a function to be run when the event happens.

You are passing it the return value of saveCuratedQuery instead.

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

See https://developer.mozilla.org/en/A_re-introduction_to_JavaScript#Closures if you need to learn about closures.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文