tinyMCE没有通过javascript更新使用jQuery Validation插件

时间:2011-10-13 00:36:07

标签: jquery validation plugins tinymce

我有一个大型表格的验证工作(我在提交前检查表单的各个部分之前发了几次),以及一个在1 textarea中工作的tinyMCE编辑器。我想将tinyMCE iframe的内容移到textarea之前(这是之前的键 - 之前)按下Submit按钮,以便在Submit之前的部分中验证内容。

我在几种方式中使用tinyMCE.triggerSave();来移动内容,然后在提交之前触发验证。没有工作。我开始相信tinyMCE内容不能被任何Javascript移动,而内容只能通过Submit按钮移动,但我没有看到任何地方说明。

在tinyMCE中,我尝试onchange_callback:handle_node_change_callback:使用triggerSave和其他保存命令触发函数。当我按两次提交时,我可以获取tinyMCE的内容以进行验证(其他人已经注意到这种特性),但不是以任何其他方式。

此外,当在tinyMCE中更正错误时,在按下提交之前,验证不会重新生效。它应该实时重新验证,因为Validation旨在实现。

2个问题 -

任何人都知道如何将tinyMCE内容移动到textarea而不点击提交?

CKEditor是否允许除提交之外的更新,如果是,那么教程或示例在哪里?

这是一个应该由tinyMCE的onchange_callback触发的代码示例,但仅在第二次单击Submit时触发。

function tinyMCESetValue(inst)
{
var content = tinyMCE.activeEditor.getContent();
if (tinyMCE.activeEditor.isDirty()) {tinyMCE.triggerSave(true, true);}
// other save expressions that have been tried - with same results
//$("#selector").val(content);
//$("textarea.tinymce").val(content);
//tinyMCE.triggerSave();
//ed.save();
alert("some change"); //does not fire
}

在回应Thariama的评论时,上面的代码应该由onchange_callback的tinyMCEinit选项触发:“tinyMCESetValue”。我在JS部分中也有以下代码,可以正确执行其他所有操作。警报始终显示“未定义”。看到有什么问题?我应该在哪里看/尝试?我可以做什么测试 - 我没有从Firebug获得有用的信息。

if ($( "#sections" ).accordion( "option", "active" ) == 1)  //if the second Accordion section
{
    var content = tinyMCE.activeEditor.getContent(); //get the content from the tinyMCE iframe
        if (tinyMCE.activeEditor.isDirty()) //if the contents of tinyMCE have changed}
        {tinyMCE.triggerSave(true, true);} //put contents in the textarea
    alert("|" + $("#detailedDescription").val() + "|tinyMCEval");
    if (i == 7) {$("#detailedDescription").rules("add", {validCharsCheck: true});}
}

2 个答案:

答案 0 :(得分:1)

我找到了解决这个问题的方法 我更改了 jquery.validate.js 文件。

this.submit(function (event) 
{ 
    if (window.tinyMCE != undefined) 
    { 
        tinyMCE.triggerSave(); 
    }
    .
    .
    .
})

此解决方案仅适用于 tinymce

答案 1 :(得分:0)

嗨,如果您在使用TINYMCE时没有在表单提交时获得客户端验证 我有一个解决方案,但这不是正确的方法,但它工作正常,您可以在表单提交时获得所有必要的验证,请检查此代码或示例 这是客户端验证            @ Html.LabelFor(model => model.txtAboutCompany,new {@class =“required”})       @ Html.EditorFor(model => model.txtAboutCompany)          

这是JQUERY

$("#BusinessProfile").click(function () {
    var aboutC = $("#txtAboutCompany").val()
    var pinfo = $("#txtProductinfo").val();
    if (aboutC == "" && pinfo == "") {
        $("#AC").append("").val("").html("Please enter about company")
        $("#PI").append("").val("").html("Please enter product information")
        $("#bpform").valid();

        return false;
    } else if (aboutC == "") {
        $("#PI").append("").val("").html("")
        $("#AC").append("").val("").html("Please enter about company")
        $("#txtAboutCompany").focus();

        $("#bpform").valid();
        return false;
    } else if (pinfo == "") {
        $("#AC").append("").val("").html("")
        $("#PI").append("").val("").html("Please enter product information")
        $("#txtProductinfo").focus();
        $("#bpform").valid();

        return false;
    }
    else {
        $("#AC").append("").val("").html("");
        $("#PI").append("").val("").html("");
        //return true;
        $("#bpform").validate();
    }
    });

试试吧