0

我正在使用 javascript 和 jquery 对话框来确认用户想要在 Web 客户端向服务器查询某些数据之前继续。

$("#get_stories").click(function(){
    if (userConfirms()){
      getStories()  //call routine to load and process stories
    } else {
      alert("Not getting any stories")
    };
    return false;
});


var userConfirms = function(){
  var $dialog = $("#dialogBox");
  $dialog.html("Are you sure?")
  $dialog.dialog("option", "buttons", 
    [
        {
            text: "Proceed",
            click: function(){
                $dialog.dialog("close");
                return true
            }
        },
        {
            text: "Cancel",
            click: function(){
                $dialog.dialog("close");
                return false
            }
        }
    ]
  );
  $dialog.dialog("open");
};

发生的事情是触发了 get_stories click 事件,正在调用 userConfirms() 以检查真/假,对话框打开以获取用户的反馈,但在用户单击“继续”或“取消”之前,控制流通过警报声明。怎样才能让原点击事件触发的函数等待用户反馈后再继续执行?

谢谢!

4

1 回答 1

0

userConfirms() 将始终返回true,解决方案是使用回调

var userConfirms = function(onSuccess, onCancel) { .....

然后点击功能(取消和成功)

click: function() { $.isFunction(onSuccess) && onSuccess() ....

像这样打电话

userConfirms(callbackForSuccess, callbackForCancel)
于 2013-03-21T21:00:31.067 回答