3

Je travaille sur une application Web .Net/C# et j'utilise un calendrier basé sur javascript pour permettre aux utilisateurs de sélectionner des dates. Cela a fonctionné très bien.DatePicker ne fonctionne plus après avoir modifié une application Web C# pour utiliser une page maquette

Aujourd'hui, j'ai changé le code pour inclure une page maître et le piqueur qui est appelé à partir d'une page enfant a cessé de fonctionner, le problème étant que la zone de texte à laquelle la date est retournée n'est plus valide. déclaration se trouve maintenant sur la page maître.

Le code est href="javascript:;" onclick="calendarPicker('form1.TBApplyDate');" title="Select Date from Calendar">Select

"Erreur ligne: 1 Erreur: 'window.opener.document.form1.TBApplyDate' est nulle ou non un objet"

J'ai vu beaucoup d'exemples en ligne de recueillir l'ID du client de la zone de texte et de passer cela dans les différentes permutations ci-dessous, mais j'ai toujours la même erreur.

href="javascript:;" onclick="calendarPicker('ctl00_MainContent_TBApplyDate');" title="Select Date from Calendar">Select


href="javascript:;" onclick="calendarPicker(form1.<%=TBApplyDate.ClientID%>');" title="Select Date from Calendar">Select


Quelqu'un peut-il fournir une aide sur la façon dont je peux faire référence à la zone de texte avec succès?

Merci d'avance.

Répondre

1

Il est parce que les ID d'élément obtenir « mutilée » par le Maître page

Je recommanderais d'utiliser jQuery et ses sélecteurs pour vous aider à saisir les contrôles nécessaires

En jquery, vous pouvez prendre un contrôle comme celui-ci:

$('[id$=myContrl]') 

Par conséquent, vous devriez être en mesure de le faire

<a href="javascript:;" onclick="calendarPicker($('[id$=TBApplyDate]'));" title="Select Date from Calendar">Select</a> 

Edit: Vous pouvez également essayer ce

<a href="javascript:;" onclick="calendarPicker($('#<%= TBApplyDate.ClientID %>'));" title="Select Date from Calendar">Select</a> 
+0

Merci pour le pointeur, malheureusement, je n'ai pas réussi à le faire fonctionner. J'ai référencé JQuery - et édité la ligne comme vous l'avez montré ci-dessus. La page ne fait plus d'erreur mais la sélection d'une date ne provoque rien. La fenêtre contextuelle de date reste ouverte et la date n'est pas transférée dans la zone de texte. J'ai également essayé "[id $ = TBApplyDate.ClientID]. Je suis un débutant complet à Jquery - été googling toute la journée en essayant diverses choses, mais n'obtenant nulle part! – GordonK

+0

@GordonK J'ai mis à jour ma réponse. Heureusement, il aide –

+0

en utilisant le ClientID est certainement le moyen d'aller ici car cela peut être modifié par Asp.Net chaque fois que vous faites un changement comme l'ajout d'une page maître, ajouter le contrôle à un panneau, etc –

0

Faites un clic droit sur votre source de navigateur et la vue et vérifiez que l'ID de la zone de texte et l'ID spécifié dans votre routine jQuery sont les mêmes. Si ce n'est pas le cas, utilisez la réponse de @ jmein pour obtenir le bon identifiant client de la zone de texte.

S'ils sont identiques, il y a un problème avec la configuration de jquery.