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

时间:2010-08-24 08:30:25

标签: jquery button textarea codemirror

我有一个下面的内容: textarea和按钮,我想用预定义的文本填充它,同时用CodeMirror进行语法高亮显示:

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

然后:

<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>

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

亲切的问候阿曼。

3 个答案:

答案 0 :(得分:5)

我用来创建CodeMirror textarea的是:

CodeMirror.fromTextArea(document.getElementById('queryText'), {
  // your settings here
});

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

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

val('<?php echo $data[0]; ?>')

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

答案 1 :(得分:3)

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

这将是设置它的新方法:

$("textarea#codemirror").codemirror({
    lineNumbers : true,
    matchBrackets : true,
    tabMode: "indent"
});

答案 2 :(得分:0)

CodeMirror接受DOM节点或具有该元素id的字符串。

我遇到了同样的问题:一旦我在textarea上设置CodeMirror,我就可以捕获(使用jquery或其他)更多的事件。