2012-04-16 46 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. オープン(ちょうどこのテスト用)、Google Chromeがデバッガのため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. PROFIT
+0

この方法はchromeでは有効ですがfirefoxでは機能しません。私はfirefoxでテストしていますので、それは動作していない理由です。 –

関連する問題