2012-04-16 115 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