在JavaScript Alert Box中调用我的函数不起作用

时间:2014-01-09 06:27:09

标签: javascript jquery callback alert

我是JavaScript和JQuery的初学者。我只是想尝试一个有趣的程序,就像JavaScript中的提示框一样。我创建了该函数并且它确实有效,但问题是当我将它包含在alert()中时,它不会等到我的函数完成它的执行。

这是我的代码:

function getString(labeltxt){
    $("body").append("<div class='pageTakeout'><div id='alertzone'><p id='alertzonetext'></p><input type='button' id='alertzoneclicker' value='OK' onclick='returnString()' /></div></div>");
    $("#alertzonetext").text(labeltxt);
    $("#alertzonetext").append("<br><br><input type='text' id='getstring_temptext' name='getstring_temptext' />");
    $(".pageTakeout").css({'display':'block'});
    $("#getstring_temptext").focus();

    getTextVal(function(result){
        return returnString(result);
        });

}

function getTextVal(callback){
        $("#getstring_temptext").keyup(function(e){
            if(e.keyCode==13){
                result=$("#getstring_temptext").val();
                callback(result);
            }
        });    
}

function returnString(result){
    $("#alertzonetext").text('');
    $(".pageTakeout").fadeOut(200,function(){
        $(".pageTakeout").remove();
    });
    var test = result;
    return test;

}

alert(getString('Enter some text'));

1 个答案:

答案 0 :(得分:1)

promptalert由于其同步性而无法复制。

您必须添加回调而不是返回值(异步),就像对getTextVal执行此操作一样:

function getString(labeltxt, callback){
    ...
    getTextVal(function(result){
        callback(returnString(result));
    });
}

最后的电话必须是:

getString('Enter some text', function(string){
   alert(string);
});

干杯