tags:

views:

344

answers:

2

I am getting this error when i run this function

<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>

I call the function in my load page in c#

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

                }
+4  A: 

The problem with the snippet you've pasted, is that the javascript function expects a single argument e, which you've not supplied. Your e actually needs to be the window.event property for this call to work.

You have two options. Either rewrite your function to be:

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

OR, rewrite the calling code to be

foreach (GridViewRow grdrow in DGPlanilla.Rows) 
{ 
  TextBox tb1 = (TextBox)grdrow.FindControl("TextBox1"); 
  if (tb1 != null) { tb1.Attributes.Add("Onkeypress", "check_no(window.event)"); 
}
Rob Levine
Thanks; it work fine.
Lose the "window." in your second example and you get a cross-browser solution.
Crescent Fresh
Thanks for the tip crescentfrsh. I've spent to long in IE on corporate intranets!
Rob Levine
+1  A: 

You are expecting e to be passed into the function, which it will in FireFox et al. but not in IE. You need to normalize your event object.

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