2012-03-21 6 views
2

다음과 같은 문제를 재생하는 최소 코드 (되지 판독 전용)을 편집 할 수없는 :텍스트 영역 IE

<div class="cell"> 
    <input type="text" size=1> 
    <textarea style="display:none;"></textarea> 
</div> 
<script type="text/javascript"> 
    $('.cell input').focusin(function() { 
    $(this).hide(); 
    $('.cell textarea').show().focus(); 
    }); 
</script> 

입력 요소를 클릭하면, 이것은 숨겨져 야 및 텍스트 영역은 도시 집중되어야 . 이것은 잘 작동하지만 IE (심지어 IE9)에서만 텍스트 영역이 읽기 전용처럼 작동합니다. 포커스가 가능하고 읽기 전용 속성이 설정되어 있지 않습니다. 텍스트 영역을 다시 클릭하면 편집 가능하게됩니다.

또한 IE readonly textarea problem에서 제안한대로 focus() 대신 select()을 시도했지만 결과에는 차이가 없습니다.

무엇이 누락 되었습니까?

+0

난 그냥 크롬이 테스트하고 잘 작동하지만 당신은 HTTP를 기술로 IE9에서, 그것의 : // jsfiddle.net/aUDJn/ IE는 무엇입니까? –

답변

4

바로 초점을 맞추면 어떤 이유로 입력 할 수 없습니다. 그러나 초점을 맞추기 전에 잠시 기다리면 작동합니다. setTimeout(func, 0) 안에 초점을 맞추면 작동합니다.

setTimeout에서 0을 밀리 초의 인수로 사용하는 것은 기본적으로 함수를 호출 스택 맨 아래로 밀어 넣고, 때로는 그 함수를 수정합니다. 왜 그렇게 확실한가요?

편집 :이 작동 왜이 질문은 설명 : Why is setTimeout(fn, 0) sometimes useful?

$('.cell input').focusin(function() { 
    $(this).hide(); 
    $('.cell textarea').show(); 
    setTimeout(function(){ 
     $('.cell textarea').focus(); 
    }, 0); 
});​ 

DEMO : http://jsfiddle.net/aUDJn/1/

+0

답변뿐만 아니라 링크에 대해 감사드립니다. – viky

+0

당신을 환영합니다 :-) –