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