【问题标题】:Error: 'keyCode' is null or not an object错误:“keyCode”为空或不是对象
【发布时间】:2009-07-09 22:48:59
【问题描述】:

我在运行这个函数时遇到这个错误

<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()");
                    }

                }

【问题讨论】:

    标签: c# javascript


    【解决方案1】:

    您粘贴的 sn-p 的问题在于,javascript 函数需要一个您未提供的参数 e。您的 e 实际上需要是 window.event 属性才能使此调用起作用。

    你有两个选择。要么将你的函数重写为:

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

    或者,将调用代码改写为

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

    【讨论】:

    • 失去“窗口”。在您的第二个示例中,您将获得一个跨浏览器的解决方案。
    • 感谢 crescentfrsh 的提示。我在公司内部网的 IE 中花费了很长时间!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-01
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      相关资源
      最近更新 更多