2009-07-09 6 views
2

Je reçois cette erreur quand je lance cette fonctionErreur: « codeTouche » est nulle ou non un objet

<script language="javascript" type="text/javascript"> 
     //function for check digit 
    function check_no(e) 
     { 
      if (!((e.keyCode >= 48) && (e.keyCode <= 53))) 
      { 
       alert("Solo valores entre 0 y 5 pueden ser ingresados"); 
       e.keyCode = 0; 
      } 
     } 
</script> 

J'appelle la fonction dans ma page de charge C#

foreach (GridViewRow grdrow in DGPlanilla.Rows) 
       { 
        TextBox tb1 = (TextBox)grdrow.FindControl("TextBox1"); 
        if (tb1 != null) 
        { 
         tb1.Attributes.Add("Onkeypress", "check_no()"); 
        } 

       } 

Répondre

5

Le problème avec l'extrait que vous avez collé, la fonction javascript attend un seul argument e, que vous n'avez pas fourni. Votre e doit en fait être la propriété window.event pour que cet appel fonctionne.

Vous avez deux options. Soit réécrire votre fonction soit:

function check_no() { 
    if (!((window.event.keyCode >= 48) ... some other stuff 
} 

OU, réécrire le code d'appel pour être

foreach (GridViewRow grdrow in DGPlanilla.Rows) 
{ 
    TextBox tb1 = (TextBox)grdrow.FindControl("TextBox1"); 
    if (tb1 != null) { tb1.Attributes.Add("Onkeypress", "check_no(window.event)"); 
} 
+0

Merci; ça marche bien. –

+1

Perdre la "fenêtre". dans votre deuxième exemple et vous obtenez une solution multi-navigateur. –

+0

Merci pour le conseil crescentfrsh. J'ai passé longtemps à IE sur les intranets d'entreprise! –

2

Vous attendez e à passer dans la fonction, il sera dans FireFox et al. mais pas dans IE. Vous devez normaliser votre objet événement.

function check_no(e) { 
    e = e || window.event; 
    if (!(e.keyCode >= 48) { 
    ... some other stuff 
    } 
} 
Questions connexes