ajax表单上的tinymce空白内容提交?

时间:2011-01-21 22:00:09

标签: jquery asp.net-mvc ajax forms tinymce

我的表单使用TinyMCE格式化HTML,但不知何故,内容在首次提交时始终为空白。这就是我对提交功能的要求:

$('#commentForm').click('submit', function () {
        tinyMCE.triggerSave(true, true);
        $(this).ajaxSubmit({
            success: function (result) {
                if (result.success) {
                    $('#commentForm')[0].reset();
                    var newComment = { comment: result.comment };
                    // Append the new comment to the div
                    $('#commentTemplate').tmpl(result.comment).appendTo('#commentsTemplate');
                }
                $('#commentFormStatus').text(result.message);
            }
        });
        return false;
    });

我已添加tinyMCE.triggerSave(true,true);但似乎无效。有什么建议吗?

感谢。

7 个答案:

答案 0 :(得分:19)

尝试替换

tinyMCE.triggerSave(true, true);

通过

tinyMCE.get("id").save();

其中“id”是您的textarea的ID。

答案 1 :(得分:3)

重要提示:如果您在同一个textarea上调用tinymce()两次或更多次,则任何save()方法都可能无效。 (我在每个DOM更改时都调用了函数)

所以,我通过删除类来解决这个问题:

$('textarea.tinymce').each(function(){
    $(this).removeClass('tinymce');
    .......

答案 2 :(得分:1)

我不知道它是如何运作的。

我遇到了firefox的问题,我解决了使用这个工作原理

提交按钮

:我的文字字段名为“Contenido”

tinyMCE.get("Contenido").setContent(tinyMCE.activeEditor.getContent());
document.getElementById("Contenido").value=tinyMCE.activeEditor.getContent();

答案 3 :(得分:1)

如果你的形式很少TINYMCE:在提交电话之前

jQuery(tinymce.get()).each(function(i, el){
        document.getElementById(el.editorId).value = el.getContent();
    });

答案 4 :(得分:1)

从版本4.2.5开始(可能更早),您似乎不需要做任何事情。它只是在编辑时保存值(可能是模糊)。

我注意到的事情是,不小心将TinyMCE多次应用于同一元素会停止正常的保存行为。这让我失败了所有其他解决方案,直到我注意到@Ксана Лысак的解决方案在同一元素上运行each两次。

在确定TinyMCE只能应用于每个textarea一次之后,它在没有帮助的情况下工作得很好。

答案 5 :(得分:0)

好的解决方案。 КсанаЛысак

但对我来说需要稍加修改,可能是因为版本4.1,我不得不使用 el.id 而不是 el.editorId

$("#thesubmit").click(function(e){
    $(tinymce.get()).each(function(i, el){
        if(el.id)
            document.getElementById(el.id).value = el.getContent();

});

答案 6 :(得分:0)

$('form').on('submit', function(form){
    // save TinyMCE instances before serialize
    tinyMCE.triggerSave();

    var data = $(this).serialize();
    $.ajax({
        type:       'POST',
        cache:      false,
        url:        'inc/process.php',
        data:       data,
        success:    function(){
                        console.log("Updates have successfully been ajaxed");
        }
    });
    return false;
});