Я создаю два экземпляра зеркального отображения кода из текстовых областей в моей форме, и мне нужно, чтобы скрытые области текста обновлялись перед отправкой. Я добавил к событию изменения сценарию, но он, похоже, не работает.
может ли кто-нибудь помочь? Спасибо
<script type="text/javascript">
function editor(id) {
var editor = CodeMirror.fromTextArea(id, {
continuousScanning: 500,
lineNumbers: true
});
editor.setSize(900, 600);
}
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);
config.on('change',function(cMirror){
// get value right from instance
config_id.value = cMirror.getValue();
});
remote_config.on('change',function(cMirror){
// get value right from instance
remote_config_id.value = cMirror.getValue();
});
</script>
Вы не можете использовать событие change
для этого: CodeMirror прослушивает изменения скрытой текстовой области, поэтому изменение значения приведет к срабатыванию другого события change
. Это может привести к бесконечным циклам.
В документации содержится правильный подход:
библиотека обеспечивает гораздо более мощный ярлык:
var myCodeMirror = CodeMirror.fromTextArea(myTextArea);
Это, помимо прочего, гарантирует, что значение textarea будет обновляться с содержимым редактора, когда будет отправлена форма (если она является частью формы).
Это означает, что у вас есть ошибка в коде, который вы не показывали выше. Возможно, вы используете странный способ отправки формы, поэтому CodeMirror не может заметить и обновить значение?
Один из вариантов - удалить CodeMirror в JavaScript, который отправит форму.