2012-04-16 8 views
1

어떻게 CkEditor의 콘텐츠 영역에 텍스트 입력 필드를 집중 시키시겠습니까? $(inputselector).focus() 전화가 작동하지 않는 것 같습니다. 커서는 원래 있던 위치에 있습니다.CkEditor에서 입력 포커스

+0

나는 확실하지 않다 그러나 나는 CKEditor 그 입력을 포함하는 iframe이있다 생각합니다. '$ (inputselector)'가 요소의 콜렉션을 반환하는지 확인하십시오. 그렇다면 이벤트 취소 등의 작업을해야 할 수도 있습니다. –

+0

입력에 따라 트리거되는 이벤트를 선택하지만 이벤트를 명시 적으로 트리거하더라도 요소 포커스를 얻을 수 없습니다. 이 경우에는 focus()가 실제로 커서를 움직이지 않는다고 생각합니다. –

+0

브라우저 동작입니다. 'contenteditable' 속성을 꺼내면 잘 작동합니다. '$ (inputselector) .closest ('body'). removeAttr ('contenteditable'); 또는'contenteditable = "true"'가 어디에 있든. –

답변

1
  1. http://ckeditor.com/demo
  2. 공개 (다만이 테스트에 대한) 구글 크롬 디버거에 대한 Ctrl+Shift+I 충돌 얻을
  3. 클릭 "콘솔"(마지막 탭 - 그것은 작은 슈바이처와 토마토를 가지고)
  4. 아래의 모든 줄을 복사하여 붙여 넣기하십시오. Enter

    var tgbody = $('iframe')[0].contentDocument.getElementsByTagName('body')[0]; 
    var target = $(tgbody).find('> *')[0]; 
    var wildin = $("<input type='text' name='cfld' id='cfld' value='some text' />"); 
    
    $(tgbody).removeAttr('contenteditable'); 
    $($('iframe')[0].contentDocument.getElementsByTagName('body')[0]).removeAttr('contenteditable'); 
    wildin.appendTo(target); 
    
    /// O.o 0.º 
    
    wildin.focus(); 
    
  5. 다시 Ctrl+Shift+I을 누르십시오. 콘텐츠 영역 내에 새로운 입력이 있고 커서가 그 안에 있음을 알 수 있습니다.

  6. ?????
  7. 이익
+0

이 방법은 크롬에서는 작동하지만 파이어 폭스에서는 작동하지 않는 것처럼 보입니다. 나는 파이어 폭스에서 테스트를 해왔으므로 그것이 작동하지 않는 이유이다. –

관련 문제