2010-04-01 3 views
2

나는 폼 요소 정의가로 :jQuery 코드는 콘솔 작동하지만 인 페이지

<div class="field"> 
    <div class="name"> 
     <label for="User_LastName"> 
      Last name: <span class="asterisk">*</span></label> 
    </div> 
    <div class="value"> 
     <%= Html.TextBox("User.LastName", Model.LastName)%> 
     <%= Html.ValidationMessage("User.LastName")%> 
    </div> 
</div> 

및 입력이 부모 초점을 강조 될때 감지하기로하는 jQuery를 선택 :

$("input").focus(function() { 
    //watching for an event where an input form comes into focus 
     $(this).parent().addClass("curFocus").children("div").toggle(); 
    }); 

이 코드를 방화 광구의 콘솔에 붙여 넣으면 계획대로 작동합니다. 그러나, 나는 이것을 'RenderPartial'.net mvc 페이지에서 실행하고 있습니다. 다른 jQuery 코드가 동일한 $ (document) .ready (function() {블록이 올바르게 작동합니다.)

양식은 html 헬퍼를 사용하여 프로세스를 다소 복잡하게 만들 수있는 입력을 생성하지만, 그 코드의 콘솔 아니지만 '실시간'페이지이다. 내가이 문제를 해결하려면 어떻게

은?

답변

3

당신이 부분을 렌더링하고는 $("input") 선택이를 찾을 수없는 경우 m 올바른 동작을보고 요소가 아직 준비되지 않았기 때문에 이것을 조정할 수 있습니다. 라이브 이벤트로 변경하면 document.ready 실행 후 추가 된 요소에 적용됩니다.

이 그것을 수정 같은 .live()을 사용하려면 :

$("input").live('focus', function() { 
    $(this).parent().addClass("curFocus").children("div").toggle(); 
}); 

참고 : jQuery를 1.4.1+

+0

RenderPartial 그래서 모든 서버 측을 발생 '$ (document) .ready()'가 실행되면 입력이 있어야합니다. – Charlino

+0

@Charlino - 아약스를 통해로드하는 경우는 아니지만, 적어도 보거나 할 일에는 적어도 있습니다. –

0

사용의 setTimeout이 필요

setOut(function(){ 
     $("input").focus(function() { 
      //watching for an event where an input form comes into focus 
      $(this).parent().addClass("curFocus").children("div").toggle(); 
     }); 
    },500) 
관련 문제