2011-04-07 164 views
0

我在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

回答

0

你的函数 “calUtils.commentAdd()” 将始终返回未定义当前语句,这意味着calUtils.addCalculation()& & calUtils.commentAdd()将始终为false。我认为这就是为什么你的“calUtils.endResult()”永远不能工作。

+0

由于ajax调用导致它未定义,反正怎么做这个工作? – fsloke 2011-04-15 13:28:37