Javascript CodeMirror-当有多个编辑器时,将文本插入编辑器
我在一个页面上有两个codemirror编辑器。指向正确编辑器的项目和无线电组的下拉列表 我要做的是更改下拉列表,将项目的值插入目标编辑器(由无线电组删除) 我的代码如下:但是函数不工作。当我提醒项目值和目标时,我得到了预期的结果,但是插入文本的函数失败了:Javascript CodeMirror-当有多个编辑器时,将文本插入编辑器,javascript,jquery,codemirror,Javascript,Jquery,Codemirror,我在一个页面上有两个codemirror编辑器。指向正确编辑器的项目和无线电组的下拉列表 我要做的是更改下拉列表,将项目的值插入目标编辑器(由无线电组删除) 我的代码如下:但是函数不工作。当我提醒项目值和目标时,我得到了预期的结果,但是插入文本的函数失败了: <script type="text/javascript"> function editor(id) { var editor = CodeMirror.fromTextArea(id, {
<script type="text/javascript">
function editor(id) {
var editor = CodeMirror.fromTextArea(id, {
continuousScanning: 500,
lineNumbers: true
});
editor.setSize(null, 550);
}
var config_id = document.getElementById('id_config')
var config = editor(config_id);
var remote_config_id = document.getElementById('id_remote_config')
var remote_config = editor(remote_config_id);
function insertStringInTemplate(str, target) {
if (target== "id_config") {
var doc = config
} else {
var doc = remote_config
}
var cursor = doc.getCursor();
var pos = {
line: cursor.line,
ch: cursor.ch
}
doc.replaceRange(str, pos);
}
$(function(){
// bind change event to select
$('#template_vars').on('change', function () {
var var_data = $(this).val(); // get selected value
var var_target = $('input[name=target]:checked').val();
insertStringInTemplate(var_data, var_target)
return false;
});
});
$("#template_vars").chosen({no_results_text: "Oops, nothing found!"});
</script>
函数编辑器(id){
变量编辑器=CodeMirror.fromTextArea(id{
连续扫描:500,
行号:对
});
编辑器.setSize(null,550);
}
var config\u id=document.getElementById('id\u config'))
变量配置=编辑器(配置id);
var remote\u config\u id=document.getElementById('id\u remote\u config'))
var remote\u config=editor(remote\u config\u id);
函数insertStringInTemplate(str,target){
如果(目标==“id\U配置”){
var doc=config
}否则{
var doc=远程配置
}
var cursor=doc.getCursor();
var pos={
line:cursor.line,
ch:cursor.ch
}
单据替换范围(str、pos);
}
$(函数(){
//绑定要选择的更改事件
$('#template_vars')。on('change',function(){
var var_data=$(this).val();//获取所选值
var var_target=$('input[name=target]:checked').val();
insertStringInTemplate(变量数据,变量目标)
返回false;
});
});
$(“#template_vars”)。选中({no_results_text:“Oops,找不到任何内容!”);
但是,插入文本的功能失败
函数
(即insertStringInTemplate()
)工作正常;但是,问题在于editor()
函数,您忘记返回编辑器(即CodeMirror实例)
因此,一个简单的解决方案是:
function editor(id) {
var editor = CodeMirror.fromTextArea(id, {
continuousScanning: 500,
lineNumbers: true
});
editor.setSize(null, 550);
return editor; // <- here's the fix
}
function insertStringInTemplate(str, target) {
if (target== "id_config") {
var doc = config
} else {
var doc = remote_config
}
// If there's a selection, replace the selection.
if ( doc.somethingSelected() ) {
doc.replaceSelection( str );
return;
}
// Otherwise, we insert at the cursor position.
var cursor = doc.getCursor();
var pos = {
line: cursor.line,
ch: cursor.ch
}
doc.replaceRange(str, pos);
}