2009-07-09 3 views
2

내가오류 : '키코'null이 아닌지 개체입니다

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

       } 

답변

5

문제를 실행할 때이 오류가 무엇입니까 자바 스크립트 함수가 제공하지 않은 단일 인수 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)"); 
} 
+0

감사합니다; 잘 작동합니다. –

+1

"창"을 잃습니다. 두 번째 예에서는 크로스 브라우저 솔루션을 얻습니다. –

+0

팁 crescentfrsh 주셔서 감사. 나는 기업 인트라넷에서 IE를 오랫동안 보냈다! –

2

로 호출하는 코드를 다시 작성 파이어 폭스 등의 어느 그것은 것 : 어느 함수가 될 재 작성. 하지만 IE에서는 그렇지 않습니다. 이벤트 객체를 정규화해야합니다.

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