2014-12-08 2 views
0

조금 이상합니다. 난 내 코드에서 ASP의 segmenty있어 :ASP 텍스트 상자의 값을 변경하는 Javascript 기능은 무엇입니까?

<td style="line-height: 230%;"> 
<asp:TextBox ID="txtePro" runat="server" CssClass="textbox" Font-Size="Small" 
    Height="18px" Width="100px" Visible="False" Wrap="False" 
    OnTextChanged="txtEPro_OnLeave" OnFocus="txtEPro_OnFocus()" 
    AutoPostBack="true"></asp:TextBox> 
<asp:MaskedEditExtender ID="MeeePro" runat="server" Mask="9999999" MaskType="None" 
    TargetControlID="txtePro" PromptCharacter="_" /> 
<asp:MaskedEditExtender ID="MeePRD" runat="server" Mask="999999" MaskType="None" 
    TargetControlID="txtePro" PromptCharacter="_" /> 

또한 같은 ASP 파일에 다음과 같은 기능이 있습니다

<script type = "text/javascript"> 

    function txtEPro_OnFocus() { 
     var elem = document.getElementById('txtePro'); 
     elem.value = ""; 

     alert("Hello there"); 
    } 

</script> 

는 내가 처음이 줄을 주석하는 경우를 Javascript 함수 중 "Hello there"라는 상자가 표시됩니다. 따라서 함수가 OnFocus 이벤트에서 실행 중임을 알고 있습니다. 그러나 처음 두 줄을 다시 함수에 넣으면 "txtePro"를 찾을 수 없다고합니다. 그것은 상기

elem.value = ""; 

라인의 오류 및 말한다, 나는 "ELEM"을 통해 내 마우스를 가져 가면

Unhandled exception at line 176, column 13 in Default.aspx

0x800a138f - Microsoft JScript runtime error: Unable to set value of the property 'value': object is null or undefined

, 그것은 "NULL"로 값을 보여줍니다.

아이디어가 있으십니까?

+1

ASP.NET은 기본적으로 ID를 미치게 기억 - 요소의 클라이언트 측 ID가 거의 확실하다 *하지 *'txtePro', 오히려'자바 스크립트를 찾을 수없는 이유 someContainerID_someParentID_txtePro', . –

답변

2

텍스트 상자의 ID는 ASP.NET에 의해 변경되므로 서버에 렌더링 된 후에 'txtePro'가되지 않습니다. JS 함수에서이를 참조하는 대신 적절한 ID를 얻기 위해 인라인 C#을 사용해보십시오.

function txtEPro_OnFocus() { 
    var elem = document.getElementById('<%= txtePro.ClientID %>'); 
    elem.value = ""; 

    alert("Hello there"); 
} 
+0

챔피언처럼 일했습니다. 감사! –

관련 문제