简体   繁体   中英

jQuery Text Editor (jqte), using change event

I am trying to write some code for change() event using jQuery Text Editor (jqte) , I have two functions which give jqte functionality to textarea's

One for editors loaded with Javascript, when clicking some elements in a page

function onLoadEditor(){
    jQuery(".comment-editor").jqte({
        // some jqte params, such as fsize: false,indent: false...
        change: function(){ observeEditor(); }
    });
}

And other, generic function, for pages with one single editor

jQuery(function() {
    jQuery(".comment-editor").jqte({
        // some jqte params, such as fsize: false,indent: false...
        change: function(){ observeEditor(); }
    });
});

I want to access the id of the concrete textarea (all textareas in the page have an id) which has fired the change() event

How should I write observeEditor() function to achieve this? Or... how I should define the function in jqte change property?

After reading this jQuery blur event with ID and value I have solved it, with following code (simplified)

function onLoadEditor(){
    jQuery(".comment-editor").each(function(idx, elem) {
        jQuery(this).jqte({
            // some jqte params, such as fsize: false,indent: false...
            change: observeEditor(elem.id),
    });
}

jQuery(function() {
    onLoadEditor();
});

But now I have another problem...

As you can read in the original question, onLoadEditor() is called when clicking some elements in a page. Then another javascript function jsComment() is called, builds a form (with a textarea.comment-editor field included) and it is rendered this way

function jsComment(){
    ...
    var form = '<div class="comments_wrapper ... ';
    jQuery(form).insertAfter(some_element).fadeIn('fast');
    onLoadEditor();
}

Problem is change() event is being fired only once, when form fades in, while the idea is the opposite, event should fire when user adds some text, not when appearing... Any tips?

UPDATE After reading Event binding on dynamically created elements? I have solved it this way

function onLoadEditor(){
    jQuery('.comment-editor').each(function(idx, elem) {
        jQuery(this).jqte({
            // some jqte params, such as fsize: false,indent: false...
        });
        jQuery(document).on('change', 
            jQuery('.comment-editor'), 
            function(){ 
                observeEditor(elem.id); 
            }
        );
    });
}

jQuery(function() {
    onLoadEditor();
});

Although finally I am not using change() event, as it was being fired constantly. Performing better with keyup() & paste() , for instance

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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