2015-06-10 49 views
0

我有一個對話框加載了一個部分視圖,從我的MVC 4應用程序中調用了許多不同的視圖。它有一個文本區域和少量字符留在文本區域的小通知。所有工作都可以在頁面加載時正常工作,但是當對話框關閉時,無論是通過發送按鈕還是對話框標題欄中的關閉按鈕,重新打開時,'#textarea_feedback'div內容都會消失,直到頁面重新加載。我相信我應該使用對話框('destroy'),但似乎無法獲得正確的語法。要麼它沒有效果,要麼在頁面底部顯示partialview。請指教,希望我已經包含足夠的代碼來確定問題。 Thanxjquery對話銷燬語法

$(document).ready(function() { 
    var text_max = 160; 
    $('#textarea_feedback').html(text_max + ' characters remaining'); 
    $('#txtMessage').keyup(function() { 
     var text_length = $('#txtMessage').val().length; 
     var text_remaining = text_max - text_length; 
     $('#textarea_feedback').html(text_remaining + ' characters remaining'); 
    }); 


    $('#send').click(function (e) { 
     if ($('#txtSMSMessage').val().trim()) { 
      e.preventDefault(); 
      $.ajax({ 
       type: "POST", 
       data: $('form#Composer').serialize(), 
       url: '/MyController/MyAction', 
       success: function (data) { 
        alert('Sent'); 
        $('#Composer').closest("div.ui-dialog-content").dialog("close"); 
       }, 
       error: function (a, b, c) { 
        $("#Composer").unblock(); 
        alert(b); 
       } 
      }); 
      //$('#Composer').closest("div.ui-dialog-content").dialog("destroy"); 
     } 
    }); 

    //var dialog = $('#Composer').closest("div.ui-dialog-content").dialog(); 
    //console.debug(dialog); 
    //dialog.on("dialogbeforeclose", function (event, ui) { 
    // dialog.dialog('destroy') 
    //}); 

}); 
+0

這可能是你以後在做什麼 - > [http://stackoverflow.com/questions/2864740/jquery-how-to-完全刪除對話框關閉](http://stackoverflow.com/questions/2864740/jquery-how-to-completely-remove-a-dialog-on-close) – lshettyl

+0

Thanx,我該如何投票發表評論:-) – Darkloki

+0

你可以去我提供的鏈接,並upvote幫助你的答案! – lshettyl

回答

0

想要發表回答以防萬一它能幫助別人,真的是LShetty的評論,導致我在正確的方向。加入到創建該對話框中的Ajax調用的關閉功能:

$.ajax({ 
    url: 
     ... 
    type: "POST", 
    success: function (responseText, textStatus, XMLHttpRequest) { 
     dialog.html(responseText); 
     dialog.dialog({ 
      ... 
      title: 'Send message', 
      open: function() { 
       ... 
      }, 
      close: function() { 
       $(this).dialog('destroy').remove() 
      }, 
      ... 
     }); 
    }