gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:04:56 24 4
gpt4 key购买 nike

在 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 没有变化。我哪里错了?

最佳答案

我们可以像这样用 entwine 实现这一点:

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'

关于javascript - 在 silverstripe CMS 中,按下时在 TextareaField 中添加一个选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37188923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com