textArea和CodeMirror:如何填充文本区域并突出显示?

Arm*_*man 1 jquery textarea button codemirror

我有一个完整的文章:textarea和button,我想用预定义的文本填充它,同时用CodeMirror进行语法高亮显示:

$('#query1').button()
                .click(function() {
                    $('#queryText').val(<?php echo $queryArray[0];?>);
                }
Run Code Online (Sandbox Code Playgroud)

然后:

<form id="queryFrom" name="queryBox"
    action="processquery.php" method="get">
        <textarea id="queryText"
    name="queryText" cols="120" rows="30">
    </textarea>
    </form> 
<button id="query1">Query1</button>
<script type="text/javascript" src="js/code/js/codemirror.js"></script>

<script type="text/javascript">

var editor = CodeMirror.fromTextArea('queryText', {
      height: "150px",
      parserfile: "parsesql.js",
      path: "js/code/js/",
      stylesheet: "js/code/css/sqlcolors.css",
      textWrapping: true
    });
</script>
Run Code Online (Sandbox Code Playgroud)

遗憾的是,如果启用了CodeMirror,则按钮中的文本不会填充该区域.问题是什么?

亲切的问候阿曼.

wik*_*ier 6

我发现了一个CodeMirror JQuery 插件,它承诺解决 jquery 添加其他事件处理程序的问题,但它对我不起作用:-/

这将是设置它的新方法:

$("textarea#codemirror").codemirror({
    lineNumbers : true,
    matchBrackets : true,
    tabMode: "indent"
});
Run Code Online (Sandbox Code Playgroud)


Jos*_*ndo 5

我用来创建CodeMirror textarea的是:

CodeMirror.fromTextArea(document.getElementById('queryText'), {
  // your settings here
});
Run Code Online (Sandbox Code Playgroud)

请注意getElementById,而不仅仅是给出字段的名称/ ID.

因此我认为你也应该在PHP部分发布引号,所以:

val('<?php echo $data[0]; ?>')
Run Code Online (Sandbox Code Playgroud)

如果onclick事件加载了正确的文本,则应检查源代码.如果它不起作用,请尝试在onclick中执行一个getJSON()代码,返回一个返回json编码数组的PHP文件,只包含数据键(data [0] .field或类似的东西).

  • 你仍然可以使用jQuery ...```CodeMirror.fromTextArea($('#myTextAreaId')[0],{/**settings**/});```注意选择器之后的`[0]` . (3认同)