如何在Codemirror文本编辑器中使用onchange,onmouseup事件

时间:2019-01-17 06:22:15

标签: javascript php jquery textarea codemirror

我正在使用文本编辑器作为codemirror。通常,当我尝试在textarea中使用onmouseup, onchange, oninput之类的dom事件时,它可以工作,但是在集成了Codemirror之后,它就无法工作。请告诉我在文本编辑器中调用这些事件的正确方法。

没有codemirror,它就可以工作。

<textarea id="editor" rows="30" cols="100" onchange="myFunction()" onmouseup="second();"></textarea>        
<div id="demo"></div>
<div id="second"></div> 
<script>
  function myFunction() {
       document.getElementById('demo').innerHTML="The onchange function..";}    
  function second() {
       document.getElementById('second').innerHTML="The mouseup function..";}
</script>       

在集成codemirror文本编辑器时,它不起作用。这是代码:

<textarea id="editor" onchange="myFunction()" onmouseup="second();"></textarea>
<div id="demo"></div>
<div id="second"></div> 
<script>
    var editor = CodeMirror.fromTextArea
    (document.getElementById('editor'),{
            mode:"text/x-java",
            lineNumbers:true,
            autoCloseTags:true,
            tabSize:5       
    });
    editor.setSize("1000", "450");              
    </script>       
    <script>
    function myFunction() {
          document.getElementById('demo').innerHTML="The onchange function..";}         
    function second() {
         document.getElementById('second').innerHTML="The mouseup function..";}

    </script>

1 个答案:

答案 0 :(得分:3)

由于这些事件实际上不是在文本区域上发生的,因为它是隐藏的,因此,您需要像下面这样将事件绑定到.CodeMirror元素:

$(document).on('mouseup', '.CodeMirror', function() {
    // do something...
});
$(document).on('change', '.CodeMirror', function() {
    // do something...
});

此外,我使用keyup而不是change事件,因为您必须单击.CodeMirror才能使更改功能运行...