javascript中的事件顺序无法正常运行

时间:2012-08-28 16:11:36

标签: javascript jquery asp.net-mvc

我已经看过几个关于这个主题的帖子,但是得不到答案。我有一个onClick事件,它调用Uploadfile()函数,只有在调用Uploadfile()函数后,我想调用EnableSaveButton()函数。下面粘贴的是代码,我有click事件,Uploadfile()函数和EnableSaveButton()函数。目前只调用Uploadfile(),但不会触发EnableSavebutton()函数。如果有人能告诉我我做错了什么,我将不胜感激。

***更新:让我重新说出这个问题。我如何确保只在调用UploadFile()之后调用EnableSaveButton()。目前发生的事情是,在UploadFile()之前触发EnableSaveButton。

$("#btnUploadFile").click(function(event) {
    event.preventDefault();
    uploadFile();
    EnableSaveButton();

});

function uploadFile() {
    $.get('<%: Url.Action("UploadFile","Files") %>', null, function(getData) {
        $(getData).appendTo('body');
    });
}

function EnableSaveButton() {
    var selectedvalue = $("#FileGuid").val();
    alert(selectedvalue);
    if (selectedvalue != "") {
        $("#btnSave").removeAttr("disabled");
    }
}​

5 个答案:

答案 0 :(得分:2)

function (event) {
    event.preventDefault();
    EnableSaveButton();
}

此函数已声明但未分配或使用...因此未调用函数EnableSaveButton

答案 1 :(得分:1)

您在单击处理程序中声明一个永远不会被调用的匿名函数。

function (event) {
    event.preventDefault();
    EnableSaveButton();
}

为什么你不会这样做:

$("#btnUploadFile").click(function (event) {
    event.preventDefault();
    uploadFile();
    EnableSaveButton();
});

答案 2 :(得分:1)

我相信你希望在EnableSaveButton()函数完成后调用UploadFile()函数(或者更具体地说,在UploadFile函数内的Ajax调用完成后调用),是否正确?

$("#btnUploadFile").click(function (event) {
            event.preventDefault();
            uploadFile();
        });

  function uploadFile() {
        $.get(
            '<%: Url.Action("UploadFile","Files") %>',
            null,
            function (getData) {
                $(getData).appendTo('body');
                EnableSaveButton();
            }
        );
    }

答案 3 :(得分:0)

此:

function (event) { 
    event.preventDefault(); 
    EnableSaveButton(); 
}

声明一个带有一个参数的匿名函数(称为事件)。然后它不被称为在某个地方。如果您想调用您的函数,那么您可以这样做:

(function (event) { 
    event.preventDefault(); 
    EnableSaveButton(); 
})(event);

或:

var handler = function (event) { 
    event.preventDefault(); 
    EnableSaveButton(); 
}
handler();

或更简单:

EnableSaveButton(); 

答案 4 :(得分:0)

那么为什么不调用EnableSaveButton作为上传文件的ajax代码的回调。 我一直都在使用这种技术。 ajax请求获取一些数据并将其转储到页面中,然后执行用户定义的回调以调整滚动条,表单元素等。