【发布时间】:2016-09-08 09:45:15
【问题描述】:
在 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 的使用没有变化。我哪里错了?
【问题讨论】:
-
@GavinBruce 所以我已将该代码放入 silverstripe 包装器中,但没有效果
标签: javascript php silverstripe