2010-01-15 6 views
2

je suis tombé sur ce qui suit donné une page asp.net contenantdialogue jquery interfère avec la case d'entrée .net propriété checked - toujours faux

<div id='test'> 
    <input type='checkbox' id='ch1' name='ch1' runat=server /> 
    <input type="button" id="view_test" /> 
</div> 

et le code jquery ci-dessous pour afficher cette div dans une boîte de dialogue

$("#view_test").click(function() { 
    $("#test").dialog({ show: 'slide', width: 600, title: 'View Check' }); 
}); 

Si le bouton view_test a été cliqué, l'initialisation de la boîte de dialogue, avant que le post de formulaire ne sauvegarde la case à cocher ch1.Checked propriété dans .Net est toujours False. Cependant, si vous ne faites que la publication sans initialiser la boîte de dialogue, cela fonctionne comme prévu.

C'est la chose la plus étrange ...

Répondre

3

La boîte de dialogue jquery est déplacée dans la dom lorsqu'elle est créée. Après avoir créé la boîte de dialogue, essayez de le déplacer de nouveau dans la balise form:

$("#test").parent().appendTo($("form:first")); 

Edition - Voici plus d'un code complet:

<script type="text/javascript"> 
    $(function() { 

     $("#view_test").click(function() { 
      $("#test").dialog({ show: 'slide', width: 600, title: 'View Check' }); 
      $("#test").parent().appendTo($("form:first")); 
     }); 
    }); 
</script> 

<body> 
    <form id="form1" runat="server"> 
    <div> 
     <div id="test">    
      <input type="checkbox" id="ch1" name="ch1" runat="server" />test 
      <input type="button" id="view_test" value="click" />    
     </div>  
     <asp:Button ID="btnSubmit" runat="server" Text="submit" 
      onclick="btnSubmit_Click" />  
    </div> 
    </form> 
</body> 

code derrière:

public partial class Tests_Test : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     Response.Write(ch1.Checked.ToString()); 
    } 
} 
+0

Je dois vous remercier:) J'ai passé des heures avec ce problème ... – kiev

+0

Cette solution ne semble pas fonctionner dans IE :( – kiev

+0

Cela fonctionne pour moi dans IE.Peut-être que c'est un problème avec une partie différente de votre code? Je vais faire une modification à mon pos t avec le code complet que j'utilise et voir si cela vous aide. – fehays

1

Je ne sais pas le plug-in de dialogue JQuery, mais je cours à travers cette fréquemment, chaque Lightbox/Thickboxclone J'ai vu jusqu'à présent. Soit:

  • Le script copie les éléments DOM dans la zone Lightbox, au lieu de en mouvement eux.

  • Le script déplacer les éléments DOM dans la zone Lightbox, mais pas les déplacer dans leur position d'origine, de les mettre en dehors de la forme.

Mon pari est ce dernier arrive.

solutions de contournement possibles:

  • mettre la forme dans la fenêtre de dialogue (si possible)

  • modifier le script de dialogue de sorte qu'il stocke une référence à l'élément parent dans les DOM il des objets se déplace, et les ramène au bon endroit lorsque le dialogue se ferme. Ou utilisez la solution très simple suggérée par fehays.

Questions connexes