2011-04-07 131 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