2010-02-01 2 views
0

Je me demande si quelqu'un d'autre a rencontré le problème suivant.Javascript Validation ne fonctionne pas sur les pages de contenu .Net

Sur un seul non-lié (à une page maître) .aspx page, je suis la scène JS validations simples:

function validateMaxTrans(sender, args) { 
     // requires at least one digit, numeric only characters 
     var error = true; 
     var regexp = new RegExp("^[0-9]{1,40}(\.[0-9]{1,2})?$"); 
     var txtAmount = document.getElementById('TxtMaxTransAmount'); 
     if (txtAmount.value.match(regexp) && parseInt(txtAmount.value) >= 30) { 
      document.getElementById('maxTransValMsg').innerHTML = "" 
      args.IsValid = true; 
     } 
     else { 
      document.getElementById('maxTransValMsg').innerHTML = "*"; 
      args.IsValid = false; 
     } 
    } 

Puis, dès que je passe cela en page de contenu d'une page principale, je get txtAmount est nul.

Existe-t-il une manière différente d'accéder au DOM lorsque vous tentez d'effectuer une validation JS côté client avec des pages maître/contenu?

Répondre

0

Examinez la source de votre page de rendu dans la page maître. De nombreux éléments auront un identifiant comme ControlX $ SubControlY $ txtMaxTransAmount ... vous devrez ajuster votre validation en conséquence. Je vais souvent simplement injecter les ID dans le doc client ..


<script type="text/javascript"> 
var controls = { 
    'txtAmount': '<%=TxtMaxTransAmount.ClientId%>', 
    ... 
} 
</script> 

je mettrais ce droit avant la fin de votre zone de contenu, pour vous assurer que les contrôles sont rendus déjà. De cette façon, vous pouvez simplement utiliser window.controls.txtAmount pour référencer l'identifiant du tag du contrôle côté serveur. Vous pourriez même faire de la valeur de droite un document.getElementById ('...') directement.

0

Utilisez-vous des zones de texte ASP? Si oui, je crois que vous devez faire quelque chose comme document.getElementById('<%= txtMaxTransAmount.ClientID %>').

Hope this helps Tom

+0

Ouais, je me sers du ASP.Net TextBoxes. Utilisation de var txtAmount = document.getElementById ('TxtMaxTransAmount'); fonctionne très bien sur une page non content - juste une page .Net autonome. J'ai même utilisé l'identifiant .net qualifié/généré: ctl00_ContentPlaceHolderMainBody_Txt ... Je pense que la réponse de Tom peut fonctionner, mais j'ai fait un rapide travail, qui fonctionne très bien pour le moment. – ElHaix

Questions connexes