我有一个包含许多对话框的应用程序,并创建了一个打开对话框并将数据加载到其中的函数,因此其他函数可以打开一个对话框并处理用户选项。
问题是当我调用openDialog时它会停止调用它的函数。我想通过添加一个返回值,所以当单击一个按钮时,调用函数可以处理用户响应。
function customer_crud(op)
{
var formData = $("#customer_details_form").serialize();
var debugData = formData.replace(/&/g,'<br />');
var text = "<p>Customer Function: " + op + "</p><p>" + debugData + "</p>";
if(openDialog('DEBUG', text)){
alert("TRUE");
} else {
alert("FALSE");
}
}
function openDialog(title, text) {
var dialogOpts = {
title: title,
modal: true,
autoOpen: false,
buttons: {
"Delete all items": function() {
$( this ).dialog( "close" );
return true;
},
Cancel: function() {
$( this ).dialog( "close" );
return false
}
}
};
$("#dialog").dialog(dialogOpts);
$("#dialog").html(text).dialog('open');
}
上面的代码打开对话框,但在选择任何内容之前抛出false。如果有人可以帮助我,或者提出一个更好的方式,我会很高兴。
我计划将dialogOpts传递给函数,但将其放在那里进行测试。
由于
答案 0 :(得分:0)
openDialog函数中没有返回值。这就是为什么你总会得到假的。
答案 1 :(得分:0)
你真的没有这样的对话框,因为它不是同步/阻塞,更好的方法是在你单击对话框按钮时调用所需的方法,如下所示:
function customer_crud(op)
{
var formData = $("#customer_details_form").serialize();
var debugData = formData.replace(/&/g,'<br />');
var text = "<p>Customer Function: " + op + "</p><p>" + debugData + "</p>";
openDialog('DEBUG', text);
}
function delete_items() {
alert("Deleting!");
}
function openDialog(title, text) {
var dialogOpts = {
title: title,
modal: true,
autoOpen: false,
buttons: {
"Delete all items": function() {
$(this).dialog("close");
delete_items();
},
Cancel: function() {
$(this).dialog("close");
}
}
};
$("#dialog").dialog(dialogOpts)
.html(text).dialog('open');
}
答案 2 :(得分:0)
我有一个可以从多个按钮调用的对话框。该过程中只有一个步骤根据按下的按钮而变化。对话框的结果根据按钮进入不同的字段。因此,我在调用对话框之前在click函数中设置了一个变量。然后,在我的对话框中,我有一个switch语句,它检查变量并将值添加到适当的字段。您可以类似地使用switch语句来执行不同的功能,具体取决于您调用的对话框。
function openDialog(title, text) {
var dialogOpts = {
title: title,
modal: true,
autoOpen: false,
buttons: {
"Delete all items": function() {
switch (item_type) {
case "primary":
...
break;
case "insurance":
...
break;
case "safety":
...
break;
case "sales":
...
break;
}
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog("close");
}
}
};
$("#dialog").dialog(dialogOpts)
.html(text).dialog('open');
}