2011-11-03 5 views
1

ASP.NET 2.0을 사용하고 있습니다.ASP 서버 컨트롤 값을 JavaScript 함수에 전달할 수 없습니다.

내 항목 양식에 TextBox와 같은 다양한 ASP.NET 서버 컨트롤이 있습니다. 텍스트 상자 값을 onBlur 이벤트에 전달하고 싶습니다. 샘플 텍스트 상자 코드는 다음과 같습니다 : 입력

<asp:TextBox ID="txtTotalTw" Width="80px" runat="server" MaxLength="10" onBlur="isNumber(this.Value);"></asp:TextBox> 

코드 숨김 I 줄 아래에 추가 :

txtTotalTw.Attributes.Add("onBlur", "javascript:isNumber(this.Value)"); 

자바 스크립트는 다음과 같습니다 :

<script type="text/javascript" language="javascript"> 
function isNumber(n) { 
    alert(n); 
    return !isNaN(parseFloat(n)) && isFinite(n); 
} 
</script> 

내가 여부를 확인하기 위해 alert(n) 추가 값이 전달되었는지 여부. 값은 onBlur 이벤트에서 전달되지 않습니다. 경고 메시지에 '정의되지 않음'이 표시됩니다.

이 문제를 해결하는 방법은 무엇입니까?

답변

1

aspx 템플릿 파일에서 onBlur를 제거하십시오. 코드 숨김에서 추가 한 것을 그대로 두십시오. 작동 할 것입니다.

+0

감사처럼 뭔가 기능을 변경 다시 컨트롤에 포커스를 설정합니다. 좀 더 도움이 필요하면 비 숫자 항목이 감지 된 TextBox에 포커스를 설정하려고합니다. – RKh

1

제거 및 onblur :

<asp:TextBox ID="txtTotalTw" Width="80px" runat="server" MaxLength="10" ></asp:TextBox> 

접두사가 필요하지 않습니다 자바 스크립트 : Senad 말했듯이

txtTotalTw.Attributes.Add("onBlur", "isNumber(this.value);"); 
1

는,

이 마크 업 및 변경에 여분의 호출을 제거 . 값을 this.value.

JavaScript는 대소 문자를 구분하며 값은 정의되지 않지만 값은입니다.


은 뒤에 코드를 변경

txtTotalTw.Attributes.Add("onBlur", "javascript:isNumber(this)") 

에이

function isNumber(ctrl) { 
    var t = ctrl.value; 
    var n = parseFloat(t);  
    if (isNaN(n) || !isFinite(n)) { 
    ctrl.focus(); 
    } 
+0

위대한 작품이지만 불행히도 다른 VS-2005 문제로 인해 작동하지 않을 수 있습니다. 내 다른 질문은 여기를 참조하십시오 : http://stackoverflow.com/questions/7752496/why-server-controls-are-underlined-when-placed-inside-content-tags – RKh

+0

어떻게 관련이 있는지 잘 모릅니다. . . 당신은 사이트가 실행하지만, 당신은 IDE에서 문제가 있다고 언급 – ZedWonk