从对话框等待用户反馈时的流量控制问题

时间:2013-03-21 18:44:16

标签: javascript jquery

我正在使用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()来检查true / false,对话框打开以获得用户的反馈,但在用户点击“Proceed”或“Cancel”之前,控制流程到警报声明。在继续执行之前,如何使原始点击事件触发的功能等待用户的反馈?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

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

就这样打电话

userConfirms(callbackForSuccess, callbackForCancel)