2008-12-11 9 views
2

Pour une raison quelconque, je ne peux pas utiliser runat="server" comme attribut pour la balise d'entrée afin que jQuery affiche le bouton d'image et fonctionne. Quelque chose ne va pas sans runat="server"? Ça fonctionne bien. Et je veux que le format soit "aaaa/mm/jj" et aussi j'en ai besoin pour le serveur parce que c'est là que je vérifie si la date entrée manuellement est une date valide et qu'elle correspond au format accepté. Je veux vraiment utiliser un asp:button mais comme je ne peux pas utiliser runat="server" attribut Je ne sais pas quoi faire depuis ce qui est nécessaire pour les contrôles aspjquery datepicker

<script language="javascript" type="text/javascript"> 

    $(document).ready(function(){ 
    $("#datepicker").datepicker({ showOn: "both", 
            buttonImage: "/Content/img/calendar.gif", 
            buttonImageOnly: true }); 
    }); 

</script> 

Répondre

8

il change votre identifiant de « #datepicker » à « form1_ctl01_ctl05_datepicker "ou quelque chose lorsque vous utilisez runat = 'serveur'

EDIT: Pour une solution, vous pouvez le ramasser basé sur la classe css plutôt que ID

<input id='datepicker' runat='server' class='datepicker' /> 

$(document).ready(function(){ 
$(".datepicker").datepicker({ showOn: "both", 
           buttonImage: "/Content/img/calendar.gif", 
           buttonImageOnly: true }); 
}); 
+0

alors quand je mets runat server il change l'id en ct101_ct105_datepicker? .. et je ne comprends pas ce que tu veux dire par la seconde partie – TStamper

+0

asp.net 'server' contrôles (runat = serveur) ont leur attribut id changé en fonction de la divers conteneurs, pages maîtres, etc. qu'un contrôle est incorporé dedans. C'est pour contourner avoir plusieurs contrôles ayant le même 'id' dans la source asp.net pour ne pas violer la règle XHTML de valeurs d'id ne peut pas être répété –

2

Pour les contrôles avec runat =" server », aspnet génère son propre , ID plutôt moche pour les contrôles html rendus.

Si votre script est à la page réelle, vous pouvez remplacer
$ ("# datepicker") avec $ ("# <% = datepicker.ClientID%>"), qui
affichera l'ID mutilée que aspnet génère, ou, comme Jimmy l'a suggéré, le cible avec une classe css à la place.

0

pour la postérité:

Lorsque vous utilisez la balise runat='server', ajoutez clientidmode='static' à votre balise d'élément pour empêcher mangling de l'identifiant généré. Sur les formulaires compliqués ou imbriqués, cela peut affecter l'unicité de vos identifiants de contrôle, ce qui explique pourquoi ils sont préfixés par défaut avec l'identifiant du (des) parent (s) de l'élément.

p.s. La classe CSS est probablement le meilleur moyen (IMHO) pour gérer les datespickers, donc la réponse acceptée semble bien.