1

私は今数時間探していましたが、まだ解決できません。

だから私はテキストエディタで作業していて、「タブ」キーを押すと、選択したテキストまたはカーソルテキストセレクタの前のテキストがインデントされるようにしたいのです。私はデザインモードを調べていて、1 つの要素を designMode にしようとしましたが、間違っていない限りできません。これは私の単純なエディターを起動する私のコードです

 $(".code").click(function () {
   $(".code").attr('contenteditable', 'true');
   document.getElementById("code").designMode = "on";
 });

そして「タブキーコード

$(".code")
  .keydown(function (e) {      
  var keyCode = e.keyCode || e.which;
  if(keyCode == 9) {
    e.preventDefault();

  }
});

質問: contenteditable でインデントするにはどうすればよいですか。(キーイベントが発生しないという問題はありません)

これはテキストエリアや入力ボックスではなく、コンテンツ編集可能な div です

4

2 に答える 2

3

だから私はそれを理解しました、以下のコード

$(".code").keydown(function(e)
           {
              e = e || window.event;
              var keyCode = e.keyCode || e.which; 
              if (keyCode == 9)
              {
                e.preventDefault();
                  document.execCommand('styleWithCSS',true,null);
                  document.execCommand('indent',true,null);
              }
           });
于 2013-03-06T03:35:54.793 に答える
0

$(".code") はテキストエリアであり、フォーカスされてキーダウンされたときにイベントが発生すると想定しています。

$(function(){
    var c = $(".code");
    c.keydown(function (e) {
      e = e || window.event;
      var keyCode = e.keyCode || e.which;
      if(keyCode === 9) {
        e.preventDefault();

        $(this).val($(this).val().substring(0,$(this).get(0).selectionStart) + "\t" + $(this).val().substring($(this).get(0).selectionEnd));
      }
    });
});

例:

http://jsfiddle.net/hXxU9/

于 2013-03-06T01:43:49.730 に答える