2012-04-16 114 views
1

如何將文本輸入字段集中在CkEditor的內容區域中?撥打$(inputselector).focus()似乎不起作用。光標停留在原來的位置。CkEditor中的輸入焦點

+0

我不確定,但我認爲CKEditor有一個包含這些輸入的iframe。看看'$(inputselector)'是否返回任何元素的集合,如果是這樣,你可能需要解決事件取消或什麼的。 – 2012-04-16 05:24:25

+0

它會拾取在輸入上觸發的事件,但即使明確觸發事件,我也無法獲取元素焦點。我在考慮focus()在這種情況下實際上並沒有移動光標。 – 2012-04-16 05:49:46

+0

這就是瀏覽器行爲。拿出'contenteditable'屬性,它應該工作。 '$(inputselector).closest('body')。removeAttr('contenteditable');'或者'contenteditable =「true」'所在的位置。 – 2012-04-16 06:17:47

回答

1
  1. 得到谷歌瀏覽器(只是爲了本次測試)
  2. 開放http://ckeditor.com/demo
  3. Ctrl+Shift+I用於調試
  4. 單擊 「控制檯」(最後一個標籤 - 它具有體積小施韋策和番茄)
  5. 複製粘貼下方所有行,按回車鍵

    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(); 
    
  6. 再次點擊Ctrl+Shift+I;您會注意到內容區域內有一個新的輸入,並且您的光標位於其中。

  7. ?????
  8. 利潤
+0

它看起來像這種方法在鉻,但不是Firefox的作​​品。我一直在Firefox中測試,所以這就是爲什麼它沒有工作。 – 2012-04-16 17:18:10