简体   繁体   English

使用 JQuery 的 nicEditor 和 onchange 事件

[英]nicEditor and onchange event using JQuery

I have used More than 5 nicEditors in my application.Below is my code我在我的应用程序中使用了超过 5 个 nicEditors。下面是我的代码

$(document).ready(function() {
    bkLib.onDomLoaded(function() {
        nicEditors.editors.push(
            new nicEditor().panelInstance(
                document.getElementById('single_answer_description')
            )
        );
    });
    bkLib.onDomLoaded(function() {
        nicEditors.editors.push(
            new nicEditor().panelInstance(
                document.getElementById('multiple_answer_description')
            )
        );
    });
    bkLib.onDomLoaded(function() {
        nicEditors.editors.push(
            new nicEditor().panelInstance(
                document.getElementById('drag_words_paragraph')

            )
        );
    });
    bkLib.onDomLoaded(function(){
        var myInstance = new nicEditor().panelInstance('drag_words_paragraph');
        myInstance.addEvent('blur', function() {
            alert("m");
        });
    });
    bkLib.onDomLoaded(function() {
        nicEditors.editors.push(
            new nicEditor().panelInstance(
                document.getElementById('drop_words_paragraph')
            )
        );
    });

});

In that I want to add onchange event with drag_words_paragraph textarea.onchange of text it will add in one div..I tried like this因为我想用 drag_words_paragraph textarea.onchange 的文本添加 onchange 事件,它将添加到一个 div 中..我试过这样

bkLib.onDomLoaded(function(){
    var myInstance = new nicEditor().panelInstance('drag_words_paragraph');
    myInstance.addEvent('blur', function() {
    // Your code here that is called whenever the user blurs (stops editing) the nicedit instance
    });
});

But I can't get exact result instead im getting error removeInstance() is not a function.Please anyone help me.I am struggling for this errorlongtime.Thanks in advance但我无法得到确切的结果,而是我得到错误 removeInstance() 不是一个函数。请任何人帮助我。我正在为这个错误而苦苦挣扎。提前谢谢

In your code you are declare new PaneInstance for same ID more than once.在您的代码中,您不止一次为相同的 ID 声明新的 PaneInstance。

try changing your code as below尝试更改您的代码如下

//declare a global variable to store the editor text
var drag_words_paragraph;

$(document).ready(function() {
    // assign the text to variable
    window.drag_words_paragraph = $('#drag_words_paragraph').text();    

    bkLib.onDomLoaded(function() {
        nicEditors.editors.push(
            new nicEditor().panelInstance(
                document.getElementById('single_answer_description')
            )
        );
    });
    bkLib.onDomLoaded(function() {
        nicEditors.editors.push(
            new nicEditor().panelInstance(
                document.getElementById('multiple_answer_description')
            )
        );
    });
    bkLib.onDomLoaded(function() {
        nicEditors.editors.push(
            var myInstance = new nicEditor().panelInstance('drag_words_paragraph');
             myInstance.addEvent('blur', function() {
                  debugger;
                  var text = this.instanceById('drag_words_paragraph').getContent();
                  if (window.drag_words_paragraph == text) {
                    //Text has not been changed
                    return false;
                  } else {
                    //Text has been changed
                    //You can call your functions here.
                    alert('text changed');

                    window.drag_words_paragraph = text;
                  }
                });
            )
        );
    });

Your code seems to be working.您的代码似乎正在运行。

As commented by Richard Welsh in this http://wiki.nicedit.com/w/page/518/Editor%20Events正如Richard Welshhttp://wiki.nicedit.com/w/page/518/Editor%20Events 中所评论的

Check the snippet below based on his workaround.根据他的解决方法检查下面的代码段。

 $(function() { $('#drag_words_paragraph_text').text($('#drag_words_paragraph').text()); var myInstance = new nicEditor({ iconsPath: 'https://cdn.jsdelivr.net/nicedit/0.9r24/nicEditorIcons.gif' }).panelInstance('drag_words_paragraph'); myInstance.addEvent('blur', function() { debugger; var hiddenElem = $('#drag_words_paragraph_text'); var text = this.instanceById('drag_words_paragraph').getContent(); if ($(hiddenElem).text() == text ) { return false; } else { alert('text changed'); $(hiddenElem).text(text); } }); }); function changeText(){ var newText = $('#change_text').val(); nicEditors.findEditor('drag_words_paragraph').setContent(newText); }
 body { min-height: 500px; }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/nicedit/0.9r24/nicEdit.js"></script> <textarea class="form-control" style="width: 300px; height: 100px;" name="drag_words_paragraph" id="drag_words_paragraph"> Some random text </textarea> <div style="display:none" id="drag_words_paragraph_text"></div> <br/> <textarea id="change_text" placeholder="enter some text here" ></textarea> <button id="change_text_btn" onclick="changeText();">change text</button>

Try this:尝试这个:

document.querySelector('.nicEdit-main').addEventListener("input", function(e) {
   console.log(e.target.innerHTML)
}, false);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM