2010-09-03 4 views
1

J'ai un problème avec mon application Asp.net. Lorsque j'essaie d'enregistrer des données, je vérifie si les données sont correctes. Sinon, j'appelle une boîte de dialogue jquery avec le message d'erreur. Mais quand ma boîte de dialogue jquery apparaît, ma forme d'arrière-plan disparaît. et j'obtiens une erreur javascript: "erreur d'analyse html impossible de modifier l'élément conteneur parent avant la fermeture de l'élément enfant".La page disparaît lorsque scriptmanager appelle le dialogue jquery

Ceci est mon jquery appel de dialogue dans codebehind:

string script = "openDialog('" + text + "', '" + title + "');"; 
    ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "open", script, true); 

Ceci est mon dialogue jquery dans mon masterpage:

function openDialog(text, title) { 
    var $dialog = $('<div></div>') 
    .html(text) 
    .dialog({ 
     autoOpen: false, 
     title: title, 
     modal: true, 
     height: 100, 
     width: 220, 
     buttons: { 
      Ok: function() { 
       $(this).dialog('close'); 
      }    
     }, 
     open: function(event, ui){ 
      $('body').css('overflow','hidden'); 
     }   
    }); 

    $dialog.dialog('open'); 
} 

J'ai quelques pages où j'ai le même code et là, il fonctionne ?

Répondre

1

D'après ce link, il est probable que le nouveau div que vous essayez d'ajouter soit ajouté avant que la page n'ait terminé le rendu. Essayez ceci:

string script = "jQuery(document).ready(function($) { openDialog('" + text + "', '" + title + "'); })"; 
+0

Thx! Ça marche maintenant. – Ben

4

WOW! Je viens de réaliser que le balisage de la boîte de dialogue se trouvait dans la balise <form>, l'a déplacé et fonctionne maintenant. On dirait que VS a étendu le <form> quand j'ai ajouté quelque chose et que j'ai aussi pris mes affaires dedans.

<div id="dialog-form" title="Fill Here"> 

<fieldset> 

    <textarea rows="10" id="myPaste" cols="50"></textarea> 

</fieldset> 
</div> 
<button id="create-user">Click Here</button> 

      <asp:Button ID="btnSend" runat="server" Text="Send ALL" 
       onclick="btnSend_Click" Width="127px" /> 
</form> 

changé à:

<asp:Button ID="btnSend" runat="server" Text="Send ALL" 
      onclick="btnSend_Click" Width="127px" /> 
</form>  

<div id="dialog-form" title="Fill Here"> 

<fieldset> 

    <textarea rows="10" id="myPaste" cols="50"></textarea> 

</fieldset> 
</div> 

<button id="create-user">Click Here</button> 
Questions connexes