JQuery UI-对话框:如何在Dialog中进行回调?

时间:2011-04-07 02:40:00

标签: jquery-ui jquery

我在JQuery Dialog上面临一个问题,就是要求用户输入评论,但由于asyn AJAX,该功能无法正常工作。

以下是示例代码

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.addCalculation()&amp;&amp; calUtils.commentAdd())== TRUE?

时,如何在这样的程序中执行代码将执行calUtils.endResult()

您可以在此处尝试代码 http://jsfiddle.net/fsloke/4qdsx/1/

由于 -fsloke

1 个答案:

答案 0 :(得分:0)

您的函数“calUtils.commentAdd()”将始终为当前语句返回undefined,这意味着calUtils.addCalculation()&amp;&amp; calUtils.commentAdd()将始终为false。我认为这就是为什么你的“calUtils.endResult()”永远不会起作用的原因。