在silverstripe CMS中,按下时在TextareaField中添加一个选项卡

巴里

在silverstripe中,我需要使用TextareaField中的选项卡-当前它会离开该字段,但是我希望它在此处写一个选项卡。

更新根据下面的注释,我添加了此代码...

_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被调用,因为我使用了die('hello world')进行检查。但是,在任何TextareaField中,Tab的使用都没有改变。我要去哪里错了?

3dgoo

我们可以像这样通过缠绕来实现:

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);

通过将其放入配置yml文件中,我们为所有CMS加载此JavaScript文件:

mysite / _config / config.yml

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在silverstripe CMS中,按下时在TextareaField中添加一个选项卡

来自分类Dev

Silverstripe删除CMS选项卡中无关的has_one关系字段

来自分类Dev

在Silverstripe的“文件”选项卡中列出前3个最新的pdf

来自分类Dev

SilverStripe显示冗余选项卡

来自分类Dev

SilverStripe CMS定制CSS

来自分类Dev

Silverstripe中的$ LinkingMode值

来自分类Dev

在Silverstripe中定义首页

来自分类Dev

Silverstripe 3.1中的setLeftTitle

来自分类Dev

在Silverstripe中扩展页面

来自分类Dev

Silverstripe中的$ LinkingMode值

来自分类Dev

SilverStripe CropperField选项

来自分类Dev

Silverstripe 3.2-如何在不同选项卡的ModelAdmin中管理同一数据对象的不同列表

来自分类Dev

如何清除Silverstripe CMS中的表单输入

来自分类Dev

SilverStripe CMS代码位置

来自分类Dev

在Silverstripe中制作灰度图像

来自分类Dev

SilverStripe DataExtension中的重载枚举

来自分类Dev

在SilverStripe 3中嵌入字段

来自分类Dev

SilverStripe中的SS_HTTPRequest

来自分类Dev

SilverStripe DataExtension中的重载枚举

来自分类Dev

SilverStripe 中的 OnClick 滚动 JavaScript

来自分类Dev

SilverStripe 3-<%循环%>的选项

来自分类Dev

带有单个选项卡的SilverStripe ModelAdmin

来自分类Dev

安装 Silverstripe 4.0.1 时出错

来自分类Dev

一个简单的AJAX示例-Silverstripe

来自分类Dev

当按下按钮或按键时,如何在AvalonDock中从一个选项卡转到另一个选项卡?

来自分类Dev

制作模块时如何在Silverstripe中添加导航项?

来自分类Dev

当从一个字段中按下选项卡时,PHP自动填充字段

来自分类Dev

Silverstripe系统使用另一个Silverstripe系统作为登录授权

来自分类Dev

如何从Silverstripe中的URL获取值

Related 相关文章

热门标签

归档