2010-10-25 7 views
0

J'utilise un CustomValidator dans ASP.NET comme suit:javascript window.event à venir nul?

<asp:CustomValidator ID="cvComment" ControlToValidate="txtComment" Display="None" 
     EnableClientScript="true" ClientValidationFunction="validateComment" 
    runat="server" ></asp:CustomValidator> 

Et ceci est la fonction qui est appelée:

function validateComment(source, args) { 
      var reComment = new RegExp("^[a-zA-Z0-9',!;[email protected]#%*.\s]{1,1000}$"); 
      var validComment = reComment.test(window.event.srcElement.value); 
      if (!validComment) 
       alert("The comment has illegal characters"); 
      args.IsValid = validComment; 
     } 

Après avoir cliqué sur le bouton qui déclenche le validateur, les pauses d'application et Je peux voir que la propriété window.event est nulle, donc évidemment il y a une référence nulle essayant de faire correspondre le regEx. Ma question est pourquoi le window.event peut-il apparaître comme nul? J'aurais pu jurer que ça fonctionnait avant.

EDIT:

J'ai modifié la fonction en tant que telle:

var check = document.getElementById(source.id); 
    var checky = check.attributes["controltovalidate"].value; 
    var checkyo = document.getElementById(checky); 
    var validHour = reOutHour.test(checkyo.value); 
    if (!validHour) 
     alert("The time is incorrectly formatted"); 
    args.IsValid = validHour; 

Maintenant que cela fonctionne sur Internet Explorer, mais pas sur Firefox ...

+2

Quels navigateurs et naviguez? 'window.event' est un contenu propriétaire d'IE. Dans d'autres navigateurs, l'objet événement est passé en tant que premier argument de la fonction de gestion. –

+0

à la fois IE et Firefox –

+0

Comment pourrais-je modifier cela pour soutenir les deux navigateurs? –

Répondre

2

Voilà comment je réussi à résoudre mon problème:

var check = document.getElementById(source.id); 
    var checky = check.controltovalidate; 
    var checkyo = document.getElementById(checky); 
    var validHour = reOutHour.test(checkyo.value); 
    if (!validHour) 
     alert("The time is incorrectly formatted"); 
    args.IsValid = validHour; 
+0

Merci beaucoup, ça m'a aidé. –

Questions connexes