了解如何使用回调

时间:2015-10-29 19:57:09

标签: javascript jquery

我还是javascript和Jquery的新手。 我知道javascript会在遇到它时执行每一行。 所以在这种情况下(当我的值> 9时)

  • 自定义提醒将会启动。
  • window.open将立即执行。

我想要发生的是自定义警报触发,一旦警报关闭,则让window.open执行。

我该如何做到这一点?

if ($('#MyCount').val() > 9) {
            MyCustom.alert("MyTitle", " Some text.... ");
            window.open(url, 'Print', "toolbar=no,menubar=no,status=no");
}else {
      window.open(url, 'Print', "toolbar=no,menubar=no,status=no");
}

2 个答案:

答案 0 :(得分:1)

if ($('#MyCount').val() > 9) {

更改为

var myCount = parseInt($('#MyCount').val());
if (!isNaN(myCount) && myCount > 9) {

其余的取决于MyCustom.alert的实施。如果它是javascript native alert的包装器,那么您的代码将按原样运行。如果它正在使用html对话框,则需要向其传递回调以在关闭时运行。

答案 1 :(得分:0)

我只是把这个example放在一起..我希望它有意义。

我们基本上将回调函数作为第三个参数传递给MyCustom.alert,并从jQuery UI中侦听'dialogclose事件。

HTML

<input id="MyCount" type="text" />
<input type="button" id="test" />

<div id="someAlert">
    <h1></h1>
    <p></p>
</div>

的JavaScript

var MyCustom = {};

MyCustom.alert = function(p1, p2, callback) {
    $("#someAlert").dialog();
    $("#someAlert").children("h1").text(p1);
    $("#someAlert").children("p").text(p2);

    alert(typeof(callback));

    $("#someAlert").on('dialogclose', function(){
        callback();
    });
};

function doSomething(){
 alert("I'm the callback");   
}

var greaterThan9 = function () { 
    if ($('#MyCount').val() > 9) {
                MyCustom.alert("MyTitle", " Some text.... ", doSomething);
                //window.open(url, 'Print', "toolbar=no,menubar=no,status=no");
    } else {
    }
}

$("#test").on("click", function(){
   greaterThan9(); 
});