Javascript 使用JQuery UI对话框从确认对话框返回值
我使用在单击按钮时显示确认对话框。我想在单击OK时返回Javascript 使用JQuery UI对话框从确认对话框返回值,javascript,jquery,html,jquery-ui,Javascript,Jquery,Html,Jquery Ui,我使用在单击按钮时显示确认对话框。我想在单击OK时返回true,否则返回false 将对话框打开调用关联到onClick(如给定,$dialog.dialog('open');)事件中不起作用。因此,作为一种解决方法,我采用了一种类似于以下内容的方法:。这种方法与我的方法有两个区别: 该示例使用锚定标记和 它不使用jQuery UI对话框 我已经修改了示例链接中给出的代码,但它不起作用。我不知道我做错了什么。有没有更便宜的方法 下面是代码,所有CSS/JS都引用jQuery CDN,因此您应该能
true
,否则返回false
将对话框打开调用关联到onClick
(如给定,$dialog.dialog('open');
)事件中不起作用。因此,作为一种解决方法,我采用了一种类似于以下内容的方法:。这种方法与我的方法有两个区别:
控制面板
发动热核战争
你就要发动战争了。
单击“确定”确认。单击“取消”取消此操作
$('#id2')。单击(函数(事件){
if($(this).data('propagationStopped')){
//警报(“真”);
$(this).data('propagationStopped',false);
返回true;
}否则{
事件。stopImmediatePropagation();
$('#id3')。对话框({
//自动打开:错误,
宽度:600,
按钮:{
“Ok”:函数(){
$(此).dialog(“关闭”);
$('#id2')。数据('propagationStopped',true);
$('#id2').triggerHandler(事件);
},
“取消”:函数(){
$(此).dialog(“关闭”);
返回false;
}
}
});
//警报(“假”);
返回false;
}
});
澄清:请注意,提交表单非常简单(请参阅)。我想在这里做的是通过点击按钮来模拟提交。更像JavaScript的方法 您的代码有点复杂,我认为有一种更简单的方法可以做到这一点。您应该首先实例化对话框,然后在按钮的单击事件中打开它。代码看起来与此类似:
<script>
$(document).ready(function () {
var $myDialog = $('<div></div>')
.html('You are about to start a war.<br/>Click OK to confirm. Click Cancel to stop this action.')
.dialog({
autoOpen: false,
title: 'Why so serious?',
buttons: {
"OK": function () {
$(this).dialog("close");
window.open('http://google.com/');
return true;
},
"Cancel": function () {
$(this).dialog("close");
return false;
}
}
});
$('#myOpener').click(function () {
return $myDialog.dialog('open'); //replace the div id with the id of the button/form
});
});
</script>
<div id="myOpener"></div>
$(文档).ready(函数(){
变量$myDialog=$('')
.html('您即将启动战争。
单击“确定”确认。单击“取消”停止此操作。')
.对话({
自动打开:错误,
标题:“为什么这么严肃?”,
按钮:{
“OK”:函数(){
$(此).dialog(“关闭”);
打开窗户http://google.com/');
返回true;
},
“取消”:函数(){
$(此).dialog(“关闭”);
返回false;
}
}
});
$('#myOpener')。单击(函数(){
返回$myDialog.dialog('open');//用按钮/窗体的id替换div id
});
});
以下是jQuery UI对话框API文档,您可以查看所有选项:
JavaScript是异步的。呼吁
$myDialog.dialog('open');
不会阻塞,而是会立即返回
相反,必须使用按钮中提供的事件回调
这个近乎重复的例子很好:
理想情况下,这个示例应该让您在“确定”时访问谷歌,然后关闭,在“取消”时不执行任何操作。我会尽量避免使用基于$(formName).submit()的显式解决方案。PS的可能重复我没有测试这段代码,只是编写了它,以便您能够了解如何解决这个问题,所以可能需要一些小的调整。是的,这段代码很好。我只想提交一份表格。。所以我要做的是将$('#formId').submit()放在window.open(');在你的回答中。但问题是我想通过点击按钮来模拟提交。我意识到问题可能不清楚,我在问题中补充澄清。谢谢你的建议。@Nishant:我不太清楚你说的“点击按钮模拟提交”是什么意思。您的意思是希望在有人单击“确定”时停止提交事件的发生吗?我想我只是想请你详细说明“模拟提交”的含义,你能提供一个相关的用例吗?不,事实上$myDialog.dialog('open');只显示确认div并返回true。JavaScript确认函数等待用户的响应,并根据用户单击的内容返回布尔值。您的解决方案将显示一个对话框并立即提交。这就是原因,我经历了更艰难的过程:捕获点击事件传播,然后使用triggerHandler重新启动事件。这个被接受的解决方案是错误的。请参阅我的答案以获得正确的解决方案。