错误:'keyCode'为null或不是对象

时间:2009-07-09 22:48:59

标签: c# javascript

运行此功能时出现此错误

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

我在c#

的加载页面中调用该函数
foreach (GridViewRow grdrow in DGPlanilla.Rows)
                {
                    TextBox tb1 = (TextBox)grdrow.FindControl("TextBox1");
                    if (tb1 != null)
                    {
                        tb1.Attributes.Add("Onkeypress", "check_no()");
                    }

                }

2 个答案:

答案 0 :(得分:5)

您粘贴的代码段的问题在于,javascript函数需要单个参数 e ,您尚未提供。您的 e 实际上需要是 window.event 属性才能使此调用生效。

您有两种选择。将您的功能重写为:

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

OR,将调用代码重写为

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

答案 1 :(得分:2)

你期望将e传递给函数,它将在FireFox等人中传递。但不是在IE中。您需要规范化您的事件对象。

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