在silverstripe CMS按下

问题描述:

在silverstripe当内TextareaField添加选项卡我有一个需要内TextareaField使用标签 - 目前,将导航从现场消失,但我想它在那里写一个标签来代替。在silverstripe CMS按下

更新基于下面我把这个添加代码注释...

_config.yml

TextareaField: 
    extensions: 
    - TextareaFieldExtension 

TextareaFieldExtension.php

class TextareaFieldExtension extends DataExtension { 

    public function onBeforeRender() { 

     Requirements::customScript(<<<JS 
      $(document).delegate('#textbox', 'keydown', function(e) { 
       var keyCode = e.keyCode || e.which; 

       if (keyCode == 9) { 
       e.preventDefault(); 
       var start = $(this).get(0).selectionStart; 
       var end = $(this).get(0).selectionEnd; 

       // set textarea value to: text before caret + tab + text after caret 
       $(this).val($(this).val().substring(0, start) + "\t" + $(this).val().substring(end)); 

       // put caret at right position again 
       $(this).get(0).selectionStart = 
       $(this).get(0).selectionEnd = start + 1; 
       } 
      }); 
JS 
     ); 
    } 
} 

我知道onBeforeRender被称为因为我使用了一个死亡('hello world')来检查。但是,在任何TextareaField中使用Tab都没有改变。我哪里错了?

+0

http://*.com/questions/6637341/use-tab-to-indent-in-textarea –

+0

@GavinBruce所以我已经将该代码放入银色条纹包装,但没有影响 – Barry

我们可以像这样与纠缠的实现这一点:

的mysite/JavaScript的/ cms.js

(function($) { 
    jQuery.entwine('ss', function($) { 

     $('.field.textarea textarea').entwine({ 
      onkeydown: function(e) { 
       var keyCode = e.keyCode || e.which; 

       if (keyCode == 9) { 
        e.preventDefault(); 
        var start = $(this).get(0).selectionStart; 
        var end = $(this).get(0).selectionEnd; 

        // set textarea value to: text before caret + tab + text after caret 
        $(this).val($(this).val().substring(0, start) + "\t" + $(this).val().substring(end)); 

        // put caret at right position again 
        $(this).get(0).selectionStart = $(this).get(0).selectionEnd = start + 1; 
       } 
      } 
     }); 
    }); 
})(jQuery); 

我们通过把这个在我们的配置阳明文件加载所有CMS这个JavaScript文件:

的mysite/_config/config.yml

LeftAndMain: 
    extra_requirements_javascript: 
    - 'mysite/javascript/cms.js' 
+0

我把它放在ModelAdmin初始化,因为它不工作(即js代码没有包含在页面源代码中),并且我确实开发了flush ...可能是我的错误...但我想我会评论 – Barry