javascript الحصول على قيمة textarea من textarea ckeditor مع جافا سكريبت




ckeditor packages (6)

على الأقل اعتبارًا من CKEDITOR 4.4.5 ، يمكنك إعداد مستمع لكل تغيير في محتويات المحرر ، بدلاً من تشغيل مؤقت:

CKEDITOR.on("instanceCreated", function(event) {
    event.editor.on("change", function () {
        $("#trackingDiv").html(event.editor.getData());
    });
});

أدرك أن هذا الأمر قد فات الأوان على البروتوكول الاختياري ، ولا يظهر كإجابة صحيحة أو لديه أي أصوات (حتى الآن) ، لكنني اعتقدت أنني سأقوم بتحديث المنشور للقراء في المستقبل.

أنا متعلم بقدر ما يذهب JS وعلى الرغم من أنني أمضيت بضع ساعات جيدة في القراءة من خلال البرامج التعليمية التي ساعدت الكثير ولكن ما زلت أواجه مشاكل في معرفة بالضبط كيف يمكنني معرفة ما يكتب المستخدم في textarea ckeditor .

ما أحاول فعله هو أن أحصل عليه عندما يكتب شخص ما في textarea ، كل ما يكتبه يظهر في div في جزء مختلف من الصفحة.

لديّ إدخال نصي بسيط يقوم بهذا على ما يرام ، لكن نظرًا لأن مساحة النص عبارة عن ckEditor ، فإن الرمز المماثل لا يعمل.

أعلم أن الإجابة موجودة هنا: ckEditor API textarea value لكنني لا أعرف ما يكفي لمعرفة ما قصد مني فعله. لا أفترض أن أي شخص يتوهم يساعدني؟

الكود الذي أعمله هو:

$('#CampaignTitle').bind("propertychange input", function() {
  $('#titleBar').text(this.value);
});

و

<label for="CampaignTitle">Title</label>
<input name="data[Campaign][title]" type="text" id="CampaignTitle" />

و

<div id="titleBar" style="max-width:960px; max-height:76px;"></div>

هل يمكن دمج وظيفة في JQuery

jQuery.fn.CKEditorValFor = function( element_id ){
  return CKEDITOR.instances[element_id].getData();
}

ويمر كمعلمة معرف عنصر ckeditor

var campaign_title_value = $().CKEditorValFor('CampaignTitle');

var campaignTitle= CKEDITOR.instances['CampaignTitle'].getData();

ببساطة التنفيذ

CKEDITOR.instances[elementId].getData();

مع id = id العنصر id = id العنصر المعين للمحرر.


ما زلت أواجه مشكلات في معرفة كيفية معرفة ما يكتبه المستخدم في textkea ckeditor.

حسنا ، هذا سهل إلى حد ما. على افتراض أن المحرر الخاص بك يحمل اسم "editor1" ، فسوف يوفر لك هذا تنبيهًا بمحتوياته:

alert(CKEDITOR.instances.editor1.getData());

الجزء الأصعب هو اكتشاف عندما يكتب المستخدم. من ما يمكنني قوله ، لا يوجد في الواقع دعم للقيام بذلك (وأنا لست معجبًا جدًا بالوثائق التي تم ضبطها). راجع هذا المقال: http://alfonsoml.blogspot.com/2011/03/onchange-event-for-ckeditor.html

بدلاً من ذلك ، أقترح تعيين جهاز ضبط وقت سيقوم بتحديث div الثاني بشكل مستمر بقيمة textarea:

timer = setInterval(updateDiv,100);
function updateDiv(){
    var editorText = CKEDITOR.instances.editor1.getData();
    $('#trackingDiv').html(editorText);
}

هذا يبدو للعمل على ما يرام. إليك كل شيء من أجل الوضوح:

<textarea id="editor1" name="editor1">This is sample text</textarea>

<div id="trackingDiv" ></div>

<script type="text/javascript">
    CKEDITOR.replace( 'editor1' );

    timer = setInterval(updateDiv,100);
    function updateDiv(){
        var editorText = CKEDITOR.instances.editor1.getData();
        $('#trackingDiv').html(editorText);
    }
</script>

حسنا. لقد سألت عن الحصول على قيمة من textarea ولكن في المثال الذي تستخدمه ، تستخدم مدخلاً. على أي حال ، هنا نذهب:

$("#CampaignTitle").bind("keyup", function()
{
    $("#titleBar").text($(this).val());
});

إذا كنت تريد حقًا textarea ، فقم بتغيير نص نوع الإدخال الخاص بك إلى هذا

<textarea id="CampaignTitle"></textarea>

آمل أن يساعد.





ckeditor