JQuery UI-对话框:如何在对话框中进行回调?
问题描述:
我在JQuery对话框中遇到了一个问题,它写了这样的内容,要求用户输入注释,但由于asyn AJAX导致该功能无法正常工作。JQuery UI-对话框:如何在对话框中进行回调?
下面是示例代码
HTML
<header>
<nav>
<input type="button" id="to-execute" value="Execute"/>
<input type="hidden" id="data1" value="1" />
<input type="hidden" id="data2" value="2" />
</nav>
</header>
<div id="add-comment" style="display:none;">
<b>Please enter comment:</b>
<textarea name="comment" rows="5" cols="50"></textarea>
</div>
的Javascript
$(document).ready(function() {
$("input#to-execute").live("click", function() {
if (calUtils.addCalculation() && calUtils.commentAdd()) {
return calUtils.endResult();
}
alert("I not enter the function at all");
});
});
var calUtils = {
addCalculation: function() {
var sum = parseInt($("#data1").val()) + parseInt($("#data2").val());
if (sum > 0) {
alert("More than Zero. Sum =" + sum);
return true;
} else {
alert("Less than Zero. Sum =" + sum);
return false;
}
},
commentAdd: function() {
// Dialog
$("#add-comment").dialog({
title: "Comment",
modal: false,
width: "500",
resizable: false,
position: "center",
buttons: {
"Cancel": function() {
$(this).dialog("close");
return false;
},
"Confirm": function() {
var comment = $("#add-comment textarea").val();
if (!comment && comment != null) {
alert("Please enter Comment!");
return false;
}
$(this).dialog("close");
return true;
}
}
}).dialog("open");
},
endResult: function() {
alert("Thanks you");
}
}
当点击了执行按钮,则该函数不等待calUtils.commentAdd( )之前完成执行继续下一行。这将导致calUtils.endResult()永远不会执行。
有人可以智能地告诉我我的代码有什么问题吗? 我怎样才能在这样的程序中执行calUtils.endResult()的时候都是(calUtils.addCalculation())& & calUtils.commentAdd())== TRUE?
你可以试试这里的代码 http://jsfiddle.net/fsloke/4qdsx/1/
感谢 -fsloke
答
你的函数 “calUtils.commentAdd()” 将始终返回未定义当前语句,这意味着calUtils.addCalculation()& & calUtils.commentAdd()将始终为false。我认为这就是为什么你的“calUtils.endResult()”永远不能工作。
由于ajax调用导致它未定义,反正怎么做这个工作? – fsloke 2011-04-15 13:28:37