textArea и CodeMirror: как заполнить текстовую область и выделить?

У меня есть следующее: текстовая область и кнопка, я хотел бы заполнить ее предопределенным текстом, а тем временем сделать подсветку синтаксиса с помощью 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. В чем проблема?

с уважением Арман.


person Arman    schedule 24.08.2010    source источник
comment
CodeMirror принимает как узел DOM, так и строку с идентификатором элемента. У меня та же проблема: как только я настрою CodeMirror в своей текстовой области, я могу захватить (с помощью jquery или чего-то еще) больше событий.   -  person wikier    schedule 17.07.2012


Ответы (2)


то, что я использовал для создания текстовой области CodeMirror:

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

Обратите внимание на getElementById вместо того, чтобы просто указать имя/идентификатор поля.

Таким образом, я думаю, вы также должны размещать кавычки вокруг части PHP, поэтому:

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

Вы должны проверить свой исходный код, если событие onclick загружает правильный текст. Если это не сработает, попробуйте выполнить код getJSON() в onclick файле PHP, который возвращает закодированный json массив, содержащий данные как единственный ключ (data[0].field или что-то подобное).

person Joshua - Pendo    schedule 05.05.2011
comment
Вы по-прежнему можете использовать jQuery... CodeMirror.fromTextArea( $('#myTextAreaId')[0], { /** settings **/ }); Обратите внимание на [0] после селектора. - person lucifurious; 04.02.2014

Я нашел плагин CodeMirror JQuery, который обещает решить проблемы с jquery, добавляя другие обработчики событий, но он у меня не работает :-/

Это будет новый способ настройки:

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