第一次提交时无法使用ckeditor获取Textarea表单的值,但第二次提交时可以使用

时间:2019-02-07 13:35:20

标签: jquery ajax ckeditor

我使用CKEditor文本区域,它涉及到形成区域。 我需要使用serializeArray() jQuery函数获取有关提交的表单数据。 首次提交时,它返回值“”。 在第二次提交后,它返回正确的值。 我注意到textarea值不是第一次更新,而是第二次更新。

$("form").submit(function(e){
        e.preventDefault();

        // not sure if you wanted this, but I thought I'd add it.
        // get an associative array of just the values.
        var values = $(this).serializeArray();

        var datas = {};
        values.forEach(element => {
            datas[element['name']] = element['value'].replace(/<[^>]+>/g, '');
        });
});

2 个答案:

答案 0 :(得分:0)

Ckeditor是jQuery库,因此您应该使用以下代码获取其值

var desc = CKEDITOR.instances['DSC'].getData();

或者,如果您的实例已经定义,则可以获取以下值。

var editor = CKEDITOR.replace('editor');
alert(editor.getData());

https://codepen.io/rohitmittal/pen/jdYXGe上查看工作示例

您应该在表单序列化而不是ckeditor中获取所有表单字段值。如果它第二次获得价值,我认为它将显示最近更新的价值。如果您第二次更新该值,它将仍然显示最近未更新的最后一个值。因此,我更喜欢使用上述语法来获取ckeditor值并将其添加到序列化数组中。

答案 1 :(得分:0)

请参阅:https://ckeditor.com/docs/ckeditor4/latest/guide/dev_jquery.htmlhttps://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_Adapters_jQuery.html#method-val

CKEditor具有jQuery Adapter,它允许您同时使用编辑器内部API和jQuery方法。要从编辑器获取HTML,请使用:

$( '#editor1' ).val( )