Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击确认对话框后采取适当的操作_Javascript_Jquery_Jquery Ui - Fatal编程技术网

Javascript 单击确认对话框后采取适当的操作

Javascript 单击确认对话框后采取适当的操作,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我用jQuery UI创建了一个确认对话框。 我正在尝试在用户反应后采取适当的行动(无论是是还是否): 在我的情况下,我总是得到一个no 此外,甚至在单击按钮之前,no也会出现。所以我假设,这是异步的。有没有办法防止这种情况发生 .您不需要使用$。延迟。此外,当用户按下“是”或“否”按钮时发生的逻辑应该在“按钮”配置选项中提供的功能中。像这样: $(“按钮”)。单击(函数(){ showDialog('是否要继续?'); }); 函数显示对话框(消息){ $(“#对话框”)。对话框({ 莫代尔

我用jQuery UI创建了一个确认对话框。
我正在尝试在用户反应后采取适当的行动(无论是
还是
):

在我的情况下,我总是得到一个
no

此外,甚至在单击按钮之前,
no
也会出现。所以我假设,这是异步的。有没有办法防止这种情况发生


.

您不需要使用
$。延迟
。此外,当用户按下“是”或“否”按钮时发生的逻辑应该在“按钮”配置选项中提供的功能中。像这样:

$(“按钮”)。单击(函数(){
showDialog('是否要继续?');
});
函数显示对话框(消息){
$(“#对话框”)。对话框({
莫代尔:是的,
按钮:{
“是”:函数(){
console.log('yes');
$(此).dialog(“关闭”);
},
“否”:函数(){
console.log('no');
$(此).dialog(“关闭”);
}
}
});
$(“#dialog”).html(消息);

}
您不需要使用
$。延迟
。此外,当用户按下“是”或“否”按钮时发生的逻辑应该在“按钮”配置选项中提供的功能中。像这样:

$(“按钮”)。单击(函数(){
showDialog('是否要继续?');
});
函数显示对话框(消息){
$(“#对话框”)。对话框({
莫代尔:是的,
按钮:{
“是”:函数(){
console.log('yes');
$(此).dialog(“关闭”);
},
“否”:函数(){
console.log('no');
$(此).dialog(“关闭”);
}
}
});
$(“#dialog”).html(消息);

}
您在正确的路径上使用了延迟,但您并没有真正倾听它解决或拒绝:

      $("button").click(function() {
            showDialog('Do you want to continue?').then(function() {
                console.log("yes");
            }, function() {
                console.log("no");
            })
        });

        function showDialog(message) {
            var dfd = new $.Deferred();
            $("#dialog").dialog({
                modal: true,
                buttons: {
                    "Yes": function() {
                        dfd.resolve();
                        $(this).dialog("close");
                    },
                    "No": function() {
                        dfd.reject();
                        $(this).dialog("close");
                    }
                }
            });
            $("#dialog").html(message);
            return dfd;
        }
这是你的小提琴更新工作

编辑-显示用于两个按钮的分辨率的第二小提琴手

您在正确的路径上使用了延迟,但实际上您并没有倾听它解决或拒绝:

      $("button").click(function() {
            showDialog('Do you want to continue?').then(function() {
                console.log("yes");
            }, function() {
                console.log("no");
            })
        });

        function showDialog(message) {
            var dfd = new $.Deferred();
            $("#dialog").dialog({
                modal: true,
                buttons: {
                    "Yes": function() {
                        dfd.resolve();
                        $(this).dialog("close");
                    },
                    "No": function() {
                        dfd.reject();
                        $(this).dialog("close");
                    }
                }
            });
            $("#dialog").html(message);
            return dfd;
        }
这是你的小提琴更新工作

编辑-显示用于两个按钮的分辨率的第二小提琴手

为什么要使用
$.Deferred()
?为什么要使用
$.Deferred()
?是否有任何方法可以指定需要执行的代码,而不依赖于单击的按钮?您不必使用“解析”和“拒绝”。在这两种情况下,您都可以调用resolve并向其传递一些信息。然后在success handler函数(传递到Then()中的第一个函数)中访问该信息。我在我的答案中添加了另一个小提琴,显示了如何执行该操作。是否有任何方法可以指定需要执行的代码,而不必使用单击的按钮?您不必使用“解析”和“拒绝”。在这两种情况下,您都可以调用resolve并向其传递一些信息。然后在success handler函数(传递到Then()中的第一个函数)中访问该信息。我在我的答案中添加了另一个提琴,显示了您将如何做到这一点。