我有一个textarea,在浏览器中变成了一个ace代码编辑器。基本上它只是将textarea模仿为div然后获取提交值。
自动完成功能无效。这是我的剧本:
context = dict(self._context or {})
data = self.browse([], context)[0]
如果我删除$(function () {
$('textarea[data-editor]').each(function () {
var textarea = $(this);
var mode = textarea.data('editor');
var editDiv = $('<div>', {
position: 'absolute',
height: textarea.height(),
'class': textarea.attr('class')
}).insertBefore(textarea);
textarea.css('display', 'none');
var editor = ace.edit(editDiv[0]);
editor.getSession().setValue(textarea.val());
editor.getSession().setMode("ace/mode/" + mode);
// enable autocompletion and snippets
ace.require("ace/ext/language_tools");
editor.setOptions({
enableSnippets: true,
enableBasicAutocompletion: true,
enableEmmet: true
});
// editor.setTheme("ace/theme/idle_fingers");
editor.getSession().setUseWorker(false);
editor.session.setFoldStyle('manual');
editor.setShowPrintMargin(false);
// copy back to textarea on form submit...
textarea.closest('form').submit(function () {
textarea.val(editor.getSession().getValue());
})
});
});
内的所有内容并运行
$('textarea[data-editor]').each(function () {
它工作正常。我做错了什么?
答案 0 :(得分:0)
可能您设置的错误模式没有任何完成。 版本低于工作
$(function() {
$('textarea[data-editor]').each(function() {
var textarea = $(this);
var mode = textarea.data('editor');
var editDiv = $('<div>', {
position: 'absolute',
height: textarea.height(),
'class': textarea.attr('class')
}).insertBefore(textarea);
textarea.css('display', 'none');
var editor = ace.edit(editDiv[0]);
editor.session.setValue(textarea.val());
editor.session.setMode("ace/mode/" + mode);
// enable autocompletion and snippets
ace.require("ace/ext/language_tools");
editor.setOptions({
enableSnippets: true,
enableBasicAutocompletion: true,
enableEmmet: true,
useWorker: false,
theme: "ace/theme/idle_fingers",
showPrintMargin: false,
showFoldWidgets: false
});
// copy back to textarea on form submit...
textarea.closest('form').submit(function() {
textarea.val(editor.getSession().getValue());
})
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajaxorg.github.io/ace-builds/src/ace.js"></script>
<script src="https://ajaxorg.github.io/ace-builds/src/ext-language_tools.js"></script>
<script src="https://ajaxorg.github.io/ace-builds/src/ext-emmet.js"></script>
<form>
<textarea data-editor='javascript' rows="10">{
}</textarea>
<input type="submit" value="Submit">
</form>
&#13;