2010-11-13 5 views
1

Ce que j'ai est bouton qui devrait ouvrir une autre page seulement si la longueur de la zone de texte est 8. Javascript doit être ajouté du code parce qu'il n'appelle pas simplement bla.aspx, c'est plus comme bla.aspx? Id = 4 & code = 234 etc etc ...L'ajout de javascript à partir du code rompt la validation sur la page! Comment le gérer?

J'ai ce code côté serveur

button.Attributes.Add("onclick","javascript:window.open(bla.aspx)"); 

côté client j'ai

<asp:TextBox ID="policyNumberTxt" runat="server" MaxLength="8" CausesValidation="true"></asp:TextBox> 

<asp:RegularExpressionValidator ID="policyNumberTxtRev" runat="server" 
    ControlToValidate="policyNumberTxt" ErrorMessage="Length must be 8." 
    ValidationExpression="{.{8}.}" ValidationGroup="bla" Display="Dynamic"></asp:RegularExpressionValidator> 

<asp:Button ID="printBtn" CssClass="button" Text="Print" runat="server" CausesValidation="true" ValidationGroup="bla" /> 

ce qui se passe est que lorsque je clique sur le bouton Page bla.aspx ouvre, et même le postback est triger éd. Le validateur affiche le message, mais la page est ouverte et la publication est piratée.

Comment gérer cela? La validation est cassé ...

Merci ..

+0

Vous ne ont pas besoin « javascript: » préfixe au code « onclick » (sauf quand il y a quelque chose de stupide au sujet ASP.Net qui l'exige ...) – Pointy

+0

Aslo, ce validateur ? Quel message? – Pointy

+0

RegularExpressionValidator ErrorMessage = "La longueur doit être 8." – 100r

Répondre

0

trouvé réponse here

this.cmdSubmit.Attributes.Add("onclick","if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();if(Page_IsValid){window.open('upload_status.aspx','_blank','width=250,height=250');}"); 
0

Essayez de mettre la logique de clic client dans le onsubmit du formulaire de la page au lieu?

+0

Je ne comprends pas très bien ce que tu veux dire. Je dois avoir un clic sur l'événement click client du côté serveur. – 100r

+0

Essayez quelque chose comme this.Page.Form.Attributes.Add ("onsubmit", votre code); –

1

Pour éviter de soumettre le formulaire ajouter "return false;"

button.Attributes.Add("onclick", "window.open('bla.aspx'); return false;") 

mais cela empêcherait également le formulaire de faire une publication du tout!

Notez que l'URL doit être passé entre guillemets .. Et vous n'avez pas besoin du « javascript: » préfixe "Pointy dit

Je pense que la validation expression régulière devrait être plus stricte pour permettre que des lettres et des chiffres comme celui-ci

ValidationExpression="[A-Za-z0-9]{8}" 
Questions connexes