在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都没有改变。我哪里错了?
答
我们可以像这样与纠缠的实现这一点:
的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
http://*.com/questions/6637341/use-tab-to-indent-in-textarea –
@GavinBruce所以我已经将该代码放入银色条纹包装,但没有影响 – Barry