2010-01-04 2 views
2

텍스트 상자에 텍스트가 채워질 때 JavaScript에서 함수를 어떻게 수행합니까? 텍스트 상자는 사용자에게 표시되지 않습니다. USB 마그네틱 카드 스와 이퍼로 채워집니다.jQuery에서 텍스트 상자가 채워지는 경우 javascript 함수를 실행 하시겠습니까?

의사 코드 :

<script language="javascript" type="text/javascript"> 
    function MyFunction() { 
     //execute this function when MyTxtBox is populated 
    } 
</script> 
<asp:TextBox id="MyTxtBox" runat="server" Visible="false" /> 
+0

정확히 TextBox 란 무엇입니까? 텍스트 영역입니까? – slebetman

+0

아니요, 이것은 텍스트 영역이 아닙니다. 그것이 도움이된다면 나는 그것을 바꿀 수있다. 사용자에게 숨겨진 것이 중요합니다. –

+0

값이 USB 마그네틱 카드 스와이퍼로 채워 졌다고 말하면 서버 측에서 값을 설정합니까? 그렇다면 텍스트 상자 (JS)에 대한 OnChange는 아마도 실행되지 않습니다. 그래서 뭉크의 첫 번째 추천을 받아야 할 것입니다. –

답변

3

페이지가로드 될 때 이렇게하는 것처럼 보입니다. 당신이 있다면, 이것은 효과가있을 것입니다.

$(document).ready(function(){ 
    if($('#MyTxtBox').val().length > 0){ 
     MyFunction(); 
    } 
}); 

그것은 변화의 경우

$(document).ready(function(){ 
    $('#MyTxtBox').change(function(){ 
     if($(this).val().length > 0){ 
      MyFunction(); 
     } 
    }); 
}); 
+0

변경 샘플과 함께 "Expected", "or ')'"컴파일 오류가 발생합니다. –

+0

변경 기능이 끝나면 '),'가 있어야합니다. 이제 해결되었습니다 – munch

+0

당신은'MyTxtBox' 스타일 속성이'display : none;'으로 설정되지 않았을 때 대답합니다. MyTxtBox가 숨겨져있을 때 작동하지 않습니다. –

0

이 MyTxtBox의 OnChange 이벤트에 연결합니다. ASP.NET에서 MyTxtBox ID를 다른 것으로 수정하기 때문에 JavaScript에서 적절한 ClientID를 생성하려면 약간의 ASP.NET을 수행해야합니다.

<asp:TextBox id="MyTxtBox" runat="server" Visible="false" /> 
<script language="javascript" type="text/javascript"> 
    function MyFunction() { 
     //execute this function when MyTxtBox is populated 
    } 

    document.getElementById("<%= MyTxtBox.ClientID %>").onChange = MyFunction; 
</script> 
+0

요소가 포커스를 유지하면 onChange가 실행됩니까? USB 스 와이프 입력이 자동으로 다음 입력란으로 넘어 가지 않고 문자열 끝 부분에 있으면 브라우저가 해당 onchange 이벤트를 시작합니까? – Anthony

+0

@Anthony - 네 말이 맞아. 포커스가 다음 양식 필드로 넘어 가지 않으면 onChange 이벤트가 시작되지 않습니다. 텍스트 상자가 채워지면 이벤트를 시작해야합니다. –

1

참조 뭉크의 대답하지만 눈에 보이는 설정으로 텍스트 상자를 숨기기 위해 CSS를 사용 = 텍스트 상자 HTML 발생합니다 잘못된 렌더링되지 않는 때문에 사용할 수없는 클라이언트 쪽.

<style type="text/css"> 
.USBBox 
{ 
    position: absolute; 
    left: -999em; 
    overflow: hidden; 
} 
</style> 
<asp.textbox id="MyTextBox" runat="server" CSSClass="USBBox" /> 

그런 다음 텍스트 상자를 액세서하는 jQuery의 클래스 선택기를 사용하고 엉망으로 이름에 대해 걱정하지 않아도됩니다 : 당신은 당신이에 의해 더 나은 액세스 할 수 있지만 페이지의 요소가 많은 경우

%('.USBBox') 

ID는,이 경우 문제 맹 글링 어떤 이름을 방지하기 위해 클라이언트 ID를 사용

$('#<%= MyTextBox.ClientID %>') 

업데이트를

link에 제공된 CSS 솔루션을 사용하여 사용자로부터 텍스트 상자를 숨 깁니다. 설정 표시로 올바른 해결책으로 USBBox CSS 클래스를 업데이트했습니다. 원인으로 인해 JavaScript 문제가 발생하지 않았습니다.

+0

@Michael, 업데이트 주셔서 감사합니다. 유용하게되어 기쁘게 생각합니다. –

관련 문제